如何排查java.lang.NoSuchMethodError错误

今天碰到一个java.lang.NoSuchMethodException的异常。基本解决思路是:

1、检查类所在jar包的版本是否正确。

2、检查是否有jar包冲突,比如加载了多个版本的xxx.jar。

如果是maven工程,可以通过mvn dependency:tree来显示工程的依赖树。

3、如果还无法定位,可以通过以下方法来找到工程实际加载的类属于哪个jar包。

1 Class<?> clazz = Class.forName("com.xxx.xxx.XXX"); # 类名
2 CodeSource cs = clazz.getProtectionDomain().getCodeSource();
3 String location = cs.getLocation().getPath();
4 System.out.println(location); 

以上代码没有带异常处理,自己加。

通过以上方法判断实际加载的类是否符合预期,再做处理。

时间: 2024-10-20 01:57:50

如何排查java.lang.NoSuchMethodError错误的相关文章

静态方法导致的java.lang.NoSuchMethodError错误

静态方法导致的java.lang.NoSuchMethodError错误 今天修改bug时,将变异出来的class文件直接发给测试进行测试,结果测试进行测试的时候抛出了一个java.lang.NoSuchMethodError错误,这个错误表明运行程序的时候,对象调用的方法不存在.我本地环境可以正常编译程序和运行,为什么他们的环境却不行呢,排查了日志,定位错误,将相关的两个class文件从测试环境拉了出来,反编译之,发行是因为静态方法的导致的问题. 为了方便描述和避免泄漏我这里定义了两个类A和B

Activity调用isDestroyed()方法报出,java.lang.NoSuchMethodError

在测试App的过程中,Activity调用了isDestroyed()方法,报出了java.lang.NoSuchMethodError错误. 自己手机MI 2S,版本4.1.1. 其实原因就是isDestroyed()这个方法是在4.2引入的,所以在4.1.1上调用此方法会报错. 需要做一下版本的判断了,Build.VERSION.SDK_INT < 17. 那么问题来了,如何判断某个函数引入的版本呢?从android开发者网站就可以发现, 其实想在源码里面看到,可是源码里面没有说明. htt

使用selenium遇到java.lang.NoSuchMethodError: org.apache.xpath.XPathContext,排查

处试selenium webdriver,运行小程序,抛如下错误: java.lang.NoSuchMethodError: org.apache.xpath.XPathContext.<init>(Z)V at org.apache.xpath.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:115) at org.apache.xpath.jaxp.XPathExpressionImpl.eval(XPathExpression

Hibernate常见错误:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibe

hibernate4 与 spring3有点冲突 http://blog.csdn.net/gyflyx/article/details/7632645 整合NoSuchMethodError错误 and 升级Spring3.1RC2 和Hibernate4.0.0CR7遇到的一些问题及解决 2012-02-20 10:33:28|  分类: 编程_SSH |字号 订阅 我使用的是hibernate4和spring3,然后报的错误是 java.lang.NoSuchMethodError: or

new SparkContext()发生错误java.lang.NoSuchMethodError: scala.Predef

参考:https://blog.csdn.net/weixin_40137479/article/details/80320324 new SparkContext(conf)发生错误: Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; at org.apache

Maven 多模块引用版本的问题 java.lang.NoSuchMethodError

环境:Junit测试用例 java.lang.NoSuchMethodError 很明显的错误,肯定是jar版本的问题 前提 Maven 打包并没有这个的问题,估计是做了优化处理 原测试代码 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath*:/META-INF/spring/root_test.xml"}) @ActiveProfiles("produc

Exception in thread &quot;main&quot; java.lang.NoSuchMethodError: org.testng.TestNG.configure(Lorg/testng/CommandLineArgs;)V

TestNG运行时报以下错误: Exception in thread "main" java.lang.NoSuchMethodError: org.testng.TestNG.configure(Lorg/testng/CommandLineArgs;)V at org.testng.remote.AbstractRemoteTestNG.configure(AbstractRemoteTestNG.java:77) at org.testng.remote.RemoteTestN

排查java.lang.OutOfMemoryError: GC overhead limit exceeded

帮助客户排查java.lang.OutOfMemoryError: GC overhead limit exceeded错误记录: 具体网址: https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=269134815562958&id=1554559.1&displayIndex=2&_afrWindowMode=0&_adf.ctrl-state=2t8bqbn6s_165 文档id: 155455

java.lang.NoSuchMethodError

1.错误描述 03-Oct-2014 00:17:23.095 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log No Spring WebApplicationInitializer types detected on classpath 03-Oct-2014 00:17:23.168 INFO [localhost-startStop-1] org.apache.catalina.cor