如何修复NoSuchMethodError?

问题

运行我的Java程序时,我得到了aNoSuchMethodError错误。怎么了,怎么解决?


#1 热门回答(167 赞)

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

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

如果在classesyoumade实例化的对象上调用方法时出现异常,那么你的构建过程似乎有问题。确保编译时更新实际运行的类文件。


#2 热门回答(98 赞)

我感觉到你的痛苦。你可以从一本书中学习编程,但是当涉及到使用Eclipse或Visual Studio时,它可以做一些简单的事情,比如添加一个库。每个人都希望你知道如何使用它,如果你不这样做,他们就会向你提出问题。问题是,如果你不在办公室工作或认识任何你可以提出这些问题的人,那么几乎不可能把这些东西弄清楚。无论如何...

我遇到了你的问题,这就是我修复它的方法。以下步骤是添加库的有效方法。我已经完成了前两个步骤,但是我没有通过将".jar"文件直接从文件系统拖到我的eclipse项目的"lib"文件夹中来完成最后一个步骤。此外,我不得不从构建路径和"lib"文件夹中删除以前版本的库。

如果有人知道添加/更新库的更合适的方法,请加入。

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

enter image description here

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

enter image description here

##步骤3 - 实际将.jar文件拖到"lib"文件夹中(不是可选的)

enter image description here


#3 热门回答(56 赞)

请注意,在反射的情况下,你得到anNoSuchMethodException,而使用非反射代码,你得到NoSuchMethodError。当面对一个与另一个相比时,我倾向于在非常不同的地方寻找。