我得到一个NoSuchMethodError错误时运行我的Java程序。出了什么问题,我该怎么解决?
当前回答
为了我的案子。我必须检查其他参考方法。我需要将各处的方法签名更改为与新更新的方法签名相同。
例如,将特定方法的返回类型从集合更改为数组列表。
其他回答
来回答最初的问题。根据java文档:
"NoSuchMethodError"当应用程序试图调用类(静态或实例)的指定方法,而该类不再有该方法的定义时抛出。
通常,这个错误会被编译器捕获;只有当类的定义发生不兼容的更改时,此错误才会在运行时发生。
如果发生在运行时,检查包含该方法的类是否在类路径中。 检查是否添加了新版本的JAR,方法是否兼容。
我在使用Intelij的Gradle项目中遇到了类似的问题。 我通过删除.gradle(见下面的截图)包和重建项目来解决这个问题。 .gradle包
我也有你的问题,我就是这么解决的。下面的步骤是添加库的一种工作方式。我已经正确地完成了前两个步骤,但是我没有完成最后一个步骤,即直接将“.jar”文件从文件系统拖到eclipse项目的“lib”文件夹中。此外,我必须从构建路径和“lib”文件夹中删除之前版本的库。
步骤1 -添加.jar构建路径
步骤2 -关联源和javadocs(可选)
步骤3 -实际拖动。jar文件到“lib”文件夹(非可选)
我也遇到过同样的问题。当类中存在模糊性时,也会出现这种情况。我的程序试图调用一个方法,该方法存在于两个JAR文件中,位于相同的位置/类路径。删除一个JAR文件或只使用一个JAR文件来执行代码。检查您使用的不是相同的JAR,也不是包含相同类的同一个JAR的不同版本。
DISP_E_EXCEPTION [step] [] [Z-JAVA-105 Java异常Java .lang. nosuchmethoderror (com.example.yourmethod)]
大多数时候java.lang.NoSuchMethodError会被编译器捕获,但有时它会在运行时发生。如果此错误在运行时发生,那么惟一的原因可能是类结构的更改使其不兼容。
最佳解释:https://www.journaldev.com/14538/java-lang-nosuchmethoderror
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap