NoSuchMethodError
NoSuchMethodError中文意思是没有找到方法,遇到这个错误并不是说依赖的jar包、方法不存在而找不到,这就类似于 ClassNotFoundException错误了,出现ClassNotFoundException错误也不一定是缺少依赖的jar、class,有可能是依赖的冲突,即引用了多次报错Class的jar。
那么同样道理,NoSuchMethodError出现经常是因为报错的这个方法的类的jar包产生了冲突。
明白了为什么会出现这个错误后,我们再去解决这个错误。一般情况下,手动引入jar包(即非依赖管理工具),直接remove掉重复的jar包就OK了。
我们关键说下 Maven项目出现这个问题了怎么解决。
是时候举个栗子了:
比如之前做的一个 Spring Boot 项目,做的过程中有个地方需要用到阿里dubbo jar包中的方法,引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
之后导致项目无法启动,报错为:
Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.core.annotation.
AnnotationAwareOrderComparator.sort(Ljava/util/List;)V
Ctrl+左键点入 dubbo这个依赖,发现dubbo也需要依赖Spring,而且和我项目中的Spring版本并不一样,所以就产生了冲突,
解决这个的方法就是让dubbo依赖的Spring不再再添加进项目的依赖,如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
这样项目就可以正常启动运行了。
分享到:
相关推荐
java.lang.NoSuchMethodError异常处理要点
《 从NoSuchMethodError看jvm编译和class加载方式》的测试项目代码
NULL 博文链接:https://albert0707.iteye.com/blog/562969
NULL 博文链接:https://sunrysoft.iteye.com/blog/1677989
1) Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model.validation.DefaultModelValidator: method 'void ()' not found at org.jetbrains.idea.maven.server.embedder....
主要介绍了解决 java.lang.NoSuchMethodError的错误的相关资料,需要的朋友可以参考下
本地运行报NoSuchMethodError,ClassNotFoundException。明明在依赖里有这个Jar包啊。怎么运行不了!? 项目中明明定义着某个jar包版本为2.0.2,怎么打包之后变成2.5.0了!? A项目引xxx.jar包运行好好的,B项目同样...
内含hibernate3.2与修复java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(Z)V 的错误的cglib2.2
NULL 博文链接:https://yangzb.iteye.com/blog/265212
1. 优先按照依赖管理 [dependencyManagement] 元素中指定的版本进行仲裁 2. 若无版本声明,则按照 “短路径优先” 原则(Maven2.
Android系统是在Linux 2.6版本上开发的,所以起使用设备驱动 /dev/input/event X (x为0到7)分别来映射不同事件。
Bluetooth LE for iOS and Android v2.3.unitypackage
Acts As Votable - 让任何ActiveRecord模型具备投票特性如:喜欢/不喜欢,赞同/反对
其他版本itext可能会报错com.lowagie.text.pdf.BaseFont.getCharBBox(C),很多人都遇到过这样的问题,换成Itext2.0.8就可以了,只有Itext2.0.8才支持getCharBBox(char) ,其他的为getCharBBox(Int)
比如,多个构造方法次序、NoSuchMethodError处理;新增扩展说明5条。比如,父集合元素的增加或删除异常等。 3)修改描述 22 处。比如,魔法值的示例代码、ScheduledThreadPool问题等。 4)修正嵩山版中部分代码格式...
登陆报错的问题 登录 java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 问题 导入数据库乱码解决方案: 人才管理系统项目详细文档说明 ========================================= 系统安装...
在MyEclipse中通过Struts ...此外,jar包全部正确导入之后可能还会出现java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 的异常,所以还需要删除antlr-2.7.2这个包,删包的方法网上有很多,很容易找到。