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


当前回答

只是在现有的答案上增加。我在eclipse中使用tomcat时遇到了这个问题。我换了一门课,做了以下步骤,

在eclipse中清洁和建造项目 MVN清洁安装 重新启动tomcat

我仍然面临着同样的错误。然后我清理tomcat,清理tomcat工作目录并重新启动服务器,我的问题消失了。希望这对大家有所帮助

其他回答

我也有你的问题,我就是这么解决的。下面的步骤是添加库的一种工作方式。我已经正确地完成了前两个步骤,但是我没有完成最后一个步骤,即直接将“.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] ...

我通过重命名一个Junit测试文件在Eclipse中解决了这个问题。 在我的Eclipse工作空间中,我有一个App项目和一个Test项目。 Test项目将App项目作为构建路径上的必需项目。

开始获取NoSuchMethodError。 然后我意识到Test项目中的类与App项目中的类具有相同的名称。

App/  
  src/
     com.example/  
       Projection.java
Test/  
  src/
     com.example/
       Projection.java

在将测试重命名为正确的名称“ProjectionTest.java”后,异常消失了。

发生此错误的实例: 我碰巧犯了一个愚蠢的错误,在一个非静态方法中访问私有静态成员变量。将方法改为静态解决了这个问题。

如果你在写一个webapp,确保你的容器的全局库目录和你的应用程序中没有冲突的jar版本。你可能不知道类加载器正在使用哪个jar。

如。

" /好/李勃200 mywebapp / WEB-INF /李勃