记一次java.lang.NoSuchMethodError

当思路如泉涌般、很流程的写完一段代码,点击Run看看执行结果的时候,Duang的一下输出了一串“Caused by: java.lang.NoSuchMethodError: xxx/xxx/xxx”,瞬间美好的心情就没了。

左看看又看看,有这个方法!

打开Google根据关键字探索,搜出的结果是jar冲突了,而冲突的jar的类中没有这个方法,导致找不到这个方法。网上有很多各路大神的解决办法,有用开源工具检查的,有输出依赖树结构查找的,用起来都不是很顺手。

总结了一个简单有效的方法,在IDEA中,将报错方法所在类的全类名写出来,例如输出的错误信息是“Caused by: java.lang.NoSuchMethodError: org/json/JSONObject.putOnce”,就在IDEA中输入org.json.JSONObject,然后到这个JSONObject类中查看是否有putOnce方法,一定没有,接着查看这个类所在的jar名称,将它从依赖列表中排除掉。然后,再回到刚刚输入的界面,再次进入JSONObject类,再次查看是否有putOnce方法,如果也没有将它从依赖列表中排除掉,直到找到存在putOnce方法的类,保留这个类即可。

上面说到在IDEA中输入类的全类名,其实就是想找到所在的jar,也可以在IDEA中打印出org.json.JSONObject.class.getProtectionDomain().getCodeSource()的结果,结果即是类所在的jar。

原文发布于微信公众号 - JavaQ(Java-Q)

原文发表时间:2017-10-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

Unit Test单元测试时如何模拟HttpContext

参考文章:http://blog.csdn.net/bclz_vs/article/details/6902638

18310
来自专栏更流畅、简洁的软件开发方式

分页解决方案 之 数据访问函数库——另类的思路、另类的写法,造就了不一样的发展道路。

    如何访问数据库?一个老掉牙的问题,方法多了去了,什么直接使用ado.net、使用SQLHelp、使用微软的企业库、使用ORM、使用LinQ to SQL...

24780
来自专栏大内老A

ASP.NET Core中如影随形的”依赖注入”[上]: 从两个不同的ServiceProvider说起

我们一致在说 ASP.NET Core广泛地使用到了依赖注入,通过前面两个系列的介绍,相信读者朋友已经体会到了这一点。由于前面两章已经涵盖了依赖注入在管道构建过...

43570
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(十一) ——Redis数据库与键空间

《Redis设计与实现》读书笔记(十一) ——Redis数据库与键空间 (原创内容,转载请注明来源,谢谢) 一、redis数据库 redis服务器将所有数据库都...

40060
来自专栏IT杂记

Java Socket Timeout总结

1. Socket timeout     Java socket有如下两种timeout: 建立连接timeout,暂时就叫 connect timeout;...

79890
来自专栏python3

python3--基础总练习题

3、利用 python 打印前一天的本地时间,格式为‘2018-01-30’(面试题)

56830
来自专栏walterlv - 吕毅的博客

生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型

发布于 2018-01-31 05:38 更新于 2018-05...

8220
来自专栏JackeyGao的博客

Django 进阶学习 - 动态actions

Django后台默认只有一个动作Delete selected xxxxs, 那么如果自定义动作该怎么办, 也很容易, 直接写个类似于这种的函数

10720
来自专栏恰童鞋骚年

.NET基础拾遗(5)多线程开发基础

  下面的一些基本概念可能和.NET的联系并不大,但对于掌握.NET中的多线程开发来说却十分重要。我们在开始尝试多线程开发前,应该对这些基础知识有所掌握,并且能...

13720
来自专栏分布式系统和大数据处理

.Net Remoting(基本操作) - Part.2

接下来我们考虑通常的情况,也就是 客户程序 与 宿主程序 位于不同的进程中的情况。

9120

扫码关注云+社区

领取腾讯云代金券