前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次java.lang.NoSuchMethodError

记一次java.lang.NoSuchMethodError

作者头像
JavaQ
发布2018-04-08 10:15:09
1.4K0
发布2018-04-08 10:15:09
举报
文章被收录于专栏:JavaQJavaQ

当思路如泉涌般、很流程的写完一段代码,点击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。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档