我得到一个NoSuchMethodError错误时运行我的Java程序。出了什么问题,我该怎么解决?
当前回答
这些问题是由在相同的两个类中使用相同的对象引起的。 所使用的对象不包含已添加新对象类包含的新方法。
ex:
filenotnull=/DayMoreConfig.conf
16-07-2015 05:02:10:ussdgw-1: Open TCP/IP connection to SMSC: 10.149.96.66 at 2775
16-07-2015 05:02:10:ussdgw-1: Bind request: (bindreq: (pdu: 0 9 0 [1]) 900 900 GEN 52 (addrrang: 0 0 2000) )
Exception in thread "main" java.lang.NoSuchMethodError: gateway.smpp.PDUEventListener.<init>(Lgateway/smpp/USSDClient;)V
at gateway.smpp.USSDClient.bind(USSDClient.java:139)
at gateway.USSDGW.initSmppConnection(USSDGW.java:274)
at gateway.USSDGW.<init>(USSDGW.java:184)
at com.vinaphone.app.ttn.USSDDayMore.main(USSDDayMore.java:40)
-bash-3.00$
这些问题是由伴随的02相似类引起的(1在src, 1在jar文件这里是gateway.jar)
其他回答
我刚刚通过重新启动Eclipse并运行应用程序解决了这个错误。 我的情况可能是因为我在没有关闭项目或Eclipse的情况下替换了源文件。 这导致了我使用的不同版本的类。
来回答最初的问题。根据java文档:
"NoSuchMethodError"当应用程序试图调用类(静态或实例)的指定方法,而该类不再有该方法的定义时抛出。
通常,这个错误会被编译器捕获;只有当类的定义发生不兼容的更改时,此错误才会在运行时发生。
如果发生在运行时,检查包含该方法的类是否在类路径中。 检查是否添加了新版本的JAR,方法是否兼容。
如果你在写一个webapp,确保你的容器的全局库目录和你的应用程序中没有冲突的jar版本。你可能不知道类加载器正在使用哪个jar。
如。
" /好/李勃200 mywebapp / WEB-INF /李勃
如果使用Maven或其他框架,并且您几乎随机地得到这个错误,请尝试像这样干净地安装…
clean install
如果您编写了对象并且知道它有方法,那么这种方法尤其可能工作。
我通过重命名一个Junit测试文件在Eclipse中解决了这个问题。 在我的Eclipse工作空间中,我有一个App项目和一个Test项目。 Test项目将App项目作为构建路径上的必需项目。
开始获取NoSuchMethodError。 然后我意识到Test项目中的类与App项目中的类具有相同的名称。
App/
src/
com.example/
Projection.java
Test/
src/
com.example/
Projection.java
在将测试重命名为正确的名称“ProjectionTest.java”后,异常消失了。
推荐文章
- Intellij IDEA Java类在保存时不能自动编译
- 何时使用Mockito.verify()?
- 在maven中安装mvn到底做什么
- 不可变与不可修改的集合
- 如何在JSON中使用杰克逊更改字段名
- GSON -日期格式
- 如何从线程捕获异常
- 无法解析主机"<URL here>"没有与主机名关联的地址
- 如何在Java中打印二叉树图?
- String.format()在Java中格式化双重格式
- com.jcraft.jsch.JSchException: UnknownHostKey
- Java中的操作符重载
- 如何加速gwt编译器?
- 在Hibernate中重新连接分离对象的正确方法是什么?
- 应该……接住环内还是环外?