java.lang.NoSuchMethodError异常解决

      但凡Java的开发者,想必遇到过java.lang.NoSuchMethodError的错误信息吧。究其源,这个错误基本上都是由JVM的"全盘负责委托机制"引发的问题:因为在类路径下放置了多个不同版本的类包,如commons-lang 2.x.jar和commons-lang3.x.jar都位于类路径中,代码中用到了commons-lang3.x类的某个方法,而这个方法在commons-lang2.x中并不存在,JVM加载类时碰巧又从commons-lang 2.x.jar中加载类,运行时就会抛出NoSuchMethodError的错误。

这种问题的排查是比较棘手的,特别是在Web应用的情况下,可作为类路径的系统目录比较多,特别在类包众多时,情况尤其复杂:你不知道JVM到底从哪个类包中加载类文件。不过笔者有一个一般人不告诉的易用小工具,现奉献出来:

附件中有一个srcAdd.jsp的程序,你把它放到Web应用的根路径下,通过如下方式即可查看JVM从哪个类包加载指定类:


  
http://localhost/srcAdd.jsp?className=java.net.URL 

转载于:https://my.oschina.net/usenrong/blog/197858

猜你喜欢

转载自blog.csdn.net/weixin_33752045/article/details/92028933