排查java.lang.NoSuchMethodError错误的工具



 遇到java.lang.NoSuchMethodError错误最棘手的就是一个项目引用了不同版本的类包,如commons-lang2.x.jar和commons-lang4.x.jar都位于类路径中,代码中用了commons-lang4.x类中的某个方法,而这个方法在commons-lang2.x中并不存在,JVM加载器碰巧又从commons-lang2.x.jar中加载类,运行时就会抛出NoSuchMethodError的错误。ZAz思考者日记网-束洋洋个人博客

特别是一个WEB项目中引用了很多类包,情况尤其复杂,你很难知道JVM到底从哪个Jar包中加载类文件。对于这类问题,奉上一个终极杀法:
将srcAdd文件放到web项目根目录,访问http://localhost/srcAdd.jsp?className=具体的类
即可查看JVM从哪个类包中加载指定的类。
 [s]clipboard.png
如果你用的是intellij idea那你还可以使用ClassLocationUtils.java在debug时按ALT+F8组合键,弹出Evaluate Expression对话框,在Expression处输入“ClassLocationUtils.where(<类名>.class)”即可获知当前类是从哪个JAR包中加载的。
 
用的工具附件:
 
tools.rar
文件类型: .rar d6d6bf9e817b8bf064a4d7364f654d10.rar (2.01 KB)

 

(转载本站文章请注明作者和出处 思考者日记网|束洋洋个人博客 ,请勿用于任何商业用途)

『访问 思考者日记网404页面 寻找遗失儿童』

告知
  •     本站90%以上文章均属原创,部分转载已加上原作者出处。 如需转载本站文章请您务必保留本站出处!
  •     打广告评论者请自重,请为广大网友提供一个健康干净的网络空间。
  • 感谢主机屋提供网站空间;
  • 感谢万网阿里云提供域名解析;
  • 感谢EmpireCMS提供CMS系统;
  • 感谢bootstrap展示本站前端页面;
  • 感谢Glyphicons Halflings提供字体;
  • 感谢大家一直以来对本站的喜爱,感谢大家!
近期文章 建议与反馈