NoSuchMethodError说最糟糕的事情

时间:2010-06-09 20:56:05

标签: java nosuchmethoderror

所以,我在eclipse工作,一切都编译并正确运行。但是,在构建服务器的ant下编译时,大量测试失败并出现NoSuchMethodError:

A类实施B
界面B延伸C
C需要方法getSyncID()// int字段的标准getter A.java包含getSyncID()
A.class包含getSyncID()

然而仍然抛出错误。

有谁知道这怎么可能发生?如何解决它。

2 个答案:

答案 0 :(得分:1)

当类文件彼此不同步时会发生这种情况;换句话说,一个被编译成新版本而另一个没有。尝试从头开始清洁和重建。

答案 1 :(得分:0)

当类加载器发现一个类(A)中的方法调用另一个不存在的类(B)中的方法时,会出现问题。根本原因是类加载器看到的类B与编译器在编译A时看到的类B不同。

这个问题的最常见原因是@MarkPeters说 - 你的“.class”文件与“.java”文件不同步,需要从头开始重新编译。

另一种可能性是,当您尝试运行应用程序时,您在类路径上有一些“.class”文件的旧副本。

但不管怎样,你必须相信类加载器。如果它说该方法不存在,那么它正在加载的特定“.class”文件中没有 ... 。如果该方法似乎存在于“.class”文件中,则表明您正在类路径中加载该文件的不同版本!