java.lang.NoSuchMethodError如何解决?

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

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

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

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

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

相关文章
相关标签/搜索