0

我编写的 Java 程序在普通 Java 项目中运行时会出现 NoSuchMethodError,但在 J2EE Web 项目中运行时它运行正常。NoSuchMethodError 在我编写的方法上。它不使用任何网络工具。我不知道为什么会这样。关于为什么会发生这种情况的任何见解?此外,该程序不使用 J2EE 组件。偶然我在一个网络项目中运行它并且它运行良好。

使用的软件:1.Eclipse Indigo 3.7 2.jdk 1.7 ,jre7 3.Tomcat 7

编辑1:

Exception in thread "main" java.lang.NoSuchMethodError:x.y.opinion.db.SentenceAccumulator.addSentenceForDocuId(ILcom/google/api/translate/Language;)V
at com.x.y.repo.RepoBuilder.processDocument(RepoBuilder.java:350)
at com.x.y.db.DataLoadJob.loadData(DataLoadJob.java:382)
at com.x.y.db.loadDataFromBackEnd.loadData(loadDataFromBackEnd.java:51)
at com.x.y.db.loadDataFromBackEnd.loadBackEnd(loadDataFromBackEnd.java:28)
at sample.main(sample.java:37)

编辑 2.:当我调试程序时,它要求我添加 jar 的源文件。下面是说

// Compiled from RepoBuilder.java (version 1.6 : 50.0, super bit)

但它仅使用 1.7 编译。我很确定!

4

1 回答 1

0

NoSuchMethodError当您为一个类的一个版本编写代码,然后用另一个没有您使用的方法的版本运行它时,就会发生这种情况。从文档中:

如果应用程序尝试调用类的指定方法(静态或实例),并且该类不再具有该方法的定义,则抛出该异常。

通常,这个错误会被编译器捕获;如果类的定义发生了不兼容的更改,则此错误只会在运行时发生。

确保您具有在两种环境中都给出错误的相同版本的库。

如果为您自己编写的方法引发错误,则您混合了来自不同构建的类。尝试删除所有类文件并进行干净的构建。

于 2013-07-02T09:31:19.033 回答