我得到一个NoSuchMethodError错误时运行我的Java程序。出了什么问题,我该怎么解决?
当前回答
如果你在写一个webapp,确保你的容器的全局库目录和你的应用程序中没有冲突的jar版本。你可能不知道类加载器正在使用哪个jar。
如。
" /好/李勃200 mywebapp / WEB-INF /李勃
其他回答
在没有更多信息的情况下,很难确定问题,但根本原因是您很可能针对缺少方法的类的不同版本编译了一个类,而不是您在运行时使用的类。
查看堆栈跟踪…如果在对库中的对象调用方法时出现异常,则很可能在编译和运行时使用了该库的不同版本。确保这两个地方都有正确的版本。
如果在对由您创建的类实例化的对象调用方法时出现异常,那么您的构建过程似乎是错误的。确保在编译时更新了实际运行的类文件。
注意,在反射的情况下,您将得到NoSuchMethodException,而对于非反射代码,您将得到NoSuchMethodError。当我面对其中一种和另一种时,我倾向于去看非常不同的地方。
为了我的案子。我必须检查其他参考方法。我需要将各处的方法签名更改为与新更新的方法签名相同。
例如,将特定方法的返回类型从集合更改为数组列表。
大多数时候java.lang.NoSuchMethodError会被编译器捕获,但有时它会在运行时发生。如果此错误在运行时发生,那么惟一的原因可能是类结构的更改使其不兼容。
最佳解释:https://www.journaldev.com/14538/java-lang-nosuchmethoderror
对我来说,它发生了,因为我改变了函数中的参数类型,从对象a,到字符串a。我可以用清洁和重新构建来解决它
推荐文章
- 在流中使用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