我得到一个NoSuchMethodError错误时运行我的Java程序。出了什么问题,我该怎么解决?


当前回答

如果您有权更改JVM参数,那么添加详细输出将允许您查看从哪个JAR文件加载了哪些类。

java -verbose:class <other args>

当你的程序运行时,JVM应该转储到标准输出信息,例如:

... [加载junit.framework.Assert from file:/C:/Program%20Files/junit3.8.2/junit.jar] ...

其他回答

试试这种方法:删除项目目录下的所有.class文件(当然,还有所有子目录)。重建。

有时mvn clean(如果您使用maven)不会清除javac手动创建的.class文件。这些旧文件包含旧签名,导致NoSuchMethodError。

我也有你的问题,我就是这么解决的。下面的步骤是添加库的一种工作方式。我已经正确地完成了前两个步骤,但是我没有完成最后一个步骤,即直接将“.jar”文件从文件系统拖到eclipse项目的“lib”文件夹中。此外,我必须从构建路径和“lib”文件夹中删除之前版本的库。

步骤1 -添加.jar构建路径

步骤2 -关联源和javadocs(可选)

步骤3 -实际拖动。jar文件到“lib”文件夹(非可选)

如果您有权更改JVM参数,那么添加详细输出将允许您查看从哪个JAR文件加载了哪些类。

java -verbose:class <other args>

当你的程序运行时,JVM应该转储到标准输出信息,例如:

... [加载junit.framework.Assert from file:/C:/Program%20Files/junit3.8.2/junit.jar] ...

NoSuchMethodError:我花了几个小时来修复这个问题,最终通过重命名包名来修复它,清洁和构建…尝试清洁构建首先,如果它不工作尝试重命名类名或包名和清洁构建…它应该被修复。祝你好运。

如果使用Maven或其他框架,并且您几乎随机地得到这个错误,请尝试像这样干净地安装…

clean install

如果您编写了对象并且知道它有方法,那么这种方法尤其可能工作。