当前位置:  开发笔记 > 编程语言 > 正文

如何修复NoSuchMethodError?

如何解决《如何修复NoSuchMethodError?》经验,为你挑选了6个好方法。

NoSuchMethodError在运行Java程序时遇到错误.怎么了,怎么解决?



1> Vetle..:

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

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

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


我们最近发现了其中一个的原因,结果发现构建过程在java服务器关闭之前放置了类文件,我们点击这个因为java服务器没有加载某些类,然后它确实加载了一些,但它有这些新的,并且因为新代码引用了旧类没有的方法... bingo,NoSuchMethodError

2> Chris Dutrow..:

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

第1步 - 添加.jar来构建路径

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述


+1为"每个人都希望你知道如何使用它,如果你不这样做,他们就会对你的问题进行投票."

3> erickson..:

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


+1 NoSuchMethodException与NoSuchMethodError

4> matt b..:

如果您有权更改JVM参数,则添加详细输出应该允许您查看从哪些JAR加载的类.

java -verbose:class 

运行程序时,JVM应转储到标准输出信息,例如:

...

[从文件中加载junit.framework.Assert:/ C:/Program%20Files/junit3.8.2/junit.jar]

...



5> John Meagher..:

这通常是在使用像Apache Ant这样的构建系统时引起的,当Java文件比类文件更新时,它只编译java文件.如果方法签名发生更改且类使用旧版本,则可能无法正确编译.通常的解决方法是进行完全重建(通常是"ant clean"然后是"ant").

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



6> HoldOffHunge..:

如果使用maven或其他框架,并且几乎随机地得到此错误,请尝试"clean install",特别是如果您编写了对象并且您知道它具有该方法.为我工作.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有