码迷,mamicode.com
首页 > 编程语言 > 详细

java.lang.NoSuchMethodError的通用解决思路

时间:2018-09-08 19:00:47      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:版本   中文意思   项目   war   except   exception   depend   enc   end   

  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的通用解决思路

标签:版本   中文意思   项目   war   except   exception   depend   enc   end   

原文地址:https://www.cnblogs.com/effortn/p/9609959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!