【发布时间】:2011-06-22 08:26:32
【问题描述】:
在我们的一个类上通过一个简单的 getter 方法得到了 NoSuchMethodError。奇怪的是,我们可以调试代码并在调试器中看到错误发生(通过跳过相关行),但是我们也可以使用 IDE (IntelliJ IDEA) 来查看该方法是否存在。
xxxx.getYYY() 通过 IDE 表达式求值器可以很好地求值。继续xxxx.getClass().getMethods(),我们可以在列表中看到getYYY() 方法。我们已经尝试清除所有构建的文件、IDE 输出目录、IDE 缓存、重新启动等,但似乎没有任何帮助。
如果我们针对某些东西进行编译,但随后在运行时发现了不同的 Jar/类,我会理解会发生 NoSuchMethodError。但这并没有向我解释为什么在运行时调试有问题的行时,我们可以看到该方法在那里,但是跨过该行会引发异常。
尝试在另一台机器上重现,但无法重现。
有人对这里可能发生的事情有任何见解吗?
【问题讨论】:
-
你有自己的类加载器层次结构吗?
-
您可以编辑问题并添加(完整)堆栈跟踪吗?
-
该行/方法是做什么的,您确定不是该方法引发了 NoSuchMethodError?
-
你能提供更多关于你的项目设置的信息吗?您是通过 IntelliJ 还是从命令行运行您的应用程序?
-
@Suraj,不仅仅是标准的类加载器。只是使用基本的 Spring 作为容器,没有聪明的东西。