java.lang.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>这样项目就可以正常启动运行了。
 

  

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

时间: 2024-08-27 01:14:50

java.lang.NoSuchMethodError的通用解决思路的相关文章

response.sendRedirect 报 java.lang.IllegalStateException 异常的解决思路

今天在进行代码开发的时候,出现了 java.lang.IllegalStateException异常,response.sendRedirect("./DEFAULT.html"); 这一条语句出错. 在网上进行查找之后,发现问题很有可能是因为response.sendRedirect方法执行了两次,其中一次肯定是项目框架里面的跳转,而我自己要进行跳转的话,就显得极其不方便,最后我把目光放到前端页面,在前端页面进行跳转. 一开始我的前端语句是:window.location.href=

Eclipse报Caused by: java.lang.OutOfMemoryError: PermGen space解决思路

一.修改tomcat/bin目录下的catalina.bat 在“rem ----- Execute The Requested Command ----------------------”下加入 JAVA_OPTS="-server -Xms800m -Xmx800m -XXNewSize=256M -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m" . 这种方法在只使用tomcat时管用,但使用eclipse时不

java--遇到NoSuchMethodError通用解决思路

最近接手新项目,项目一跑,NoSuchMethodError蹦出来了,好不容易解决了,换一个电脑,NoSuchMethodError又蹦出来了,干脆,总结下遇到NoSuchMethodError应该如何应对的思路. 通过下面的通用思路,可以在不必了解业务的情况下,尽可能解决这个报错. 下面演示下如何在啥都不知道的情况下遇到该错误的解决思路: 随便找一个错误示例: Caused by: java.lang.NoSuchMethodError: org.eclipse.jdt.internal.co

【原】tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig的解决

现象: tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig 解决: 把tomcat目录下的lib/servlet-api.jar文件拷贝到$JAVA_HOME/jre/lib/ext目录下,再启动tomcat问题解决

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z 的解决

jetty 9 嵌入式开发时,启动正常,但是页面一浏览就报错如下: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z 原因:jetty 9 依赖的servlet-api是3.X版本,如果项目中还有其它第3方开源库隐式依赖了2.x版本的servlet-api,就会报这个错.解决办法:gradle项目中,gradle dependencies 分析所有的依赖项,找出依赖低版本ser

关于 java.lang.NoSuchMethodError: antlr.collections.AST.getLine()的解决方法

主题:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()的解决方法 问题: 在进行SSH框架整合时会出现java.lang.NoSuchMethodError: antlr.collections.AST.getLine(): 原因: 出现的问题是struts里面的 antlr-2.7.2.jar和hibernate 里面的anltr-2.7.6.jar. 解决办法: 1.如果是自己导入的Jar包,将anltr-2.7.2.j

java.lang.NoSuchMethodError: com.google.common.hash.HashFunction.hashInt(I)Lcom/google/common/hash/HashCode; 解决办法

今天在java 上运行spark查询的时候出现一个问题: java.lang.NoSuchMethodError: com.google.common.hash.HashFunction.hashInt(I)Lcom/google/common/hash/HashCode; 后google 了一下找到了一篇相类似的问题 http://mail-archives.us.apache.org/mod_mbox/spark-user/201412.mbox/%3CD0A4C915.6E0D%[emai

记一次部署时报java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax / persistence / ValidationMode;的解决办法

楼主在部署war包的时候,本地启动不报错,服务器商报如下问题: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested excepti

Hadoop-1,web页面调用报无hbase.jar包【以解决】 2,报java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IProblem;【以解决】

1:web页面调用报无hbase.jar包 本来java文件就没有问题,但是jsp一调用那个java文件里的方法就报错,报的无hadoop/hbase相关报的问题. 主要解决方法是: 复制hbase/lib里面的jar包到hadoop的lib文件里 然后再打开hadoop/etc/hadoop/hadoop-env.sh 增加这一句: 1 export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/hbase/lib/*:/usr/lib/hbase