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


当前回答

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

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

其他回答

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

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

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

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

对我来说,这里提到的解决办法没有一个是没用的。

将模拟核从3.3.3更新到3.4.3修复了这个问题。

我认为这是由于MockitoAnnotations.initMock()方法在Mockito JUnit 5 version 3中被弃用并被MockitoAnnotations.openMocks()所取代。

另一方面,检查本地Maven Repository并删除可能导致冲突的不必要的jar可能是值得的。但在使用此步骤时,请注意,不要删除手动安装的(或在操作前备份)。

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

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

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

这通常是在使用像Apache Ant这样的构建系统时引起的,该构建系统只在java文件比类文件更新时才编译java文件。如果方法签名发生了变化,并且类使用了旧版本,则可能无法正确编译。通常的修复方法是做一个完整的重建(通常是“ant clean”然后“ant”)。

有时,当针对一个库版本进行编译,但针对不同的版本运行时,也会导致这种情况。

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

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