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


当前回答

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

其他回答

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

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

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

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

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

以上答案解释得很好。再补充一点 如果你正在使用eclipse,使用ctrl+shift+T并输入类的包结构(例如:gateway.smpp.PDUEventListener),你会找到它存在的所有jar /项目。从类路径中删除不必要的jar或将其添加到类路径中。现在它会选择正确的。

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

clean install

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

在没有更多信息的情况下,很难确定问题,但根本原因是您很可能针对缺少方法的类的不同版本编译了一个类,而不是您在运行时使用的类。

查看堆栈跟踪…如果在对库中的对象调用方法时出现异常,则很可能在编译和运行时使用了该库的不同版本。确保这两个地方都有正确的版本。

如果在对由您创建的类实例化的对象调用方法时出现异常,那么您的构建过程似乎是错误的。确保在编译时更新了实际运行的类文件。