java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V

本文介绍了在项目部署过程中遇到的CGLib版本不匹配导致的java.lang.NoSuchMethodError错误,并提供了详细的解决方案,包括如何更换CGLib版本及确保项目正确刷新。

新部署项目编译启动,到快要启动完成时报错:
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(Z)V

百度了比较久,最后参考了

http://blog.sina.com.cn/s/blog_63d48d510100t77r.html
这个帖子的介绍解决了问题。

报java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(Z)V时,查看项目文件所在的WEB-INF文件夹,里面使用的是cglib-2.1.3.jar,重新下载一个cglib-2.2.jar,将这个文件替换掉。
项目refresh,redeploy,然后重新启动即可。

2017-08-24补充
不记得是不是同一个项目了,几天重新部署(FS-ECD)的时候报了和上面相反的错误:
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(I)V
查看webRoot—WEB-INF—-lib,使用的是cglib-2.2.jar。默默地把2.1.3版本替换回去。但是还是报同样的错误?!!
又检查了一遍,是文件夹中文件替换好之后,没有对项目进行刷新。要记得Refresh!refresh!refresh!
不过为什么会出现两次这样自相矛盾的错误还没有弄明白?这里留待后续补充

java.lang.NoSuchMethodErrorJava 运行时错误,在 Java 虚拟机(JVM)试图调用一个不存在的方法时抛出,该错误通常与类的动态加载、版本不兼容性或类路径问题有关[^1]。解决 java.lang.NoSuchMethodError: java.time.LocalDateTime.<init>() 错误可参考以下方法: 1. **检查方法名称**:确保代码中没有错误地调用了 `java.time.LocalDateTime.<init>()` 方法。`LocalDateTime` 没有公共的构造函数,通常使用 `LocalDateTime.now()`、`LocalDateTime.of()` 等静态方法来创建实例。以下是正确创建 `LocalDateTime` 实例的示例: ```java import java.time.LocalDateTime; public class Main { public static void main(String[] args) { // 使用 now() 方法创建当前时间的 LocalDateTime 实例 LocalDateTime now = LocalDateTime.now(); System.out.println(now); // 使用 of() 方法创建指定时间的 LocalDateTime 实例 LocalDateTime specificDateTime = LocalDateTime.of(2024, 10, 1, 12, 30, 0); System.out.println(specificDateTime); } } ``` 2. **检查 jar 包问题**: - **确保 jar 包导入**:检查项目中是否正确导入了包含 `java.time` 包的 Java 标准库。通常在 Java 8 及以上版本中,`java.time` 是标准库的一部分,无需额外导入。如果使用的是旧版本的 Java,可能需要升级到 Java 8 或更高版本。 - **解决 jar 包冲突**:项目中不同的 jar 之间版本不同,可能会导致产生冲突,需要更换 jar 包的版本。在 Maven 项目中,当发生了 jar 包冲突,并且已经更换了 jar 包版本,启动 Tomcat 后,服务器还是无法启动并报异常,此时可以删除 `target` 目录,然后重新启动服务器[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值