我通过一个简单的getter方法在我们的一个类上获得了一个NoSuchMethodError。奇怪的是,我们可以调试代码并看到错误发生在调试器中(通过单步执行相关的行),但是我们也可以使用集成开发环境(IntelliJ IDEA)来查看方法是否存在。
通过xxxx.getYYY()表达式求值器可以很好地进行计算。转到xxxx.getClass().getMethods(),我们可以在列表中看到getYYY()方法。我们已经尝试清理所有的构建文件,IDE输出目录,IDE缓存,重启等,但似乎没有任何帮助。
我可以理解,如果我们已经针对某些东西进行了编译,但是在运行时发现了不同的NoSuchMethodError /类,那么就会发生Jar。但这并不能解释为什么在运行时调试到有问题的行时,我们可以看到方法在那里,但是跨过这行会抛出异常。
已尝试在另一台计算机上复制,但无法复制。
有没有人知道这里可能会发生什么?
发布于 2011-06-22 16:37:24
很可能您在IntelliJ中运行的代码版本与您正在编辑的代码版本不同。我经常遇到这个问题,因为有许多maven项目同时打开,并且依赖于我正在编辑的内容的不同版本。IntelliJ可能会混淆(或者我搞不清我实际运行的是哪个版本)
发布于 2015-09-04 05:35:06
NoSuchMethodError -这通常发生在运行时。我遇到了这个错误,原因是我的类路径中asm和cglib库的版本不兼容。
asm和cglib库被许多框架使用,如hibernate、spring、hadoop,用于运行时字节码操作。
Classloader总是引用类路径上的第一个jar版本。
https://stackoverflow.com/questions/6436981
复制相似问题