解决 java.lang.NoSuchMethodError的问题
1、操作
项目重新打包后,程序就找不到对应的方法
Handler dispatch failed; nested exception is java.lang.NoSuchMethodError
3、原因(可能有多种原因,但下面是我这次导致错误的原因)
有2个不同版本的jar同时存在
注:项目的打包都是maven的package,结果发现这种方式不会把同名的另外版本的jar给clean掉,所以之后要先clean再package
4.解决方法
删除掉老版本的jar
其间做过的事情:
1.怀疑传参 的时候是否需要引入标注 是否对应的相同类型 2.是否别处核心在启动中 3.差错提示中路径中多出一个大写“L” 例如:Lcom/citydelivery/deliveryService/DTO/Response;]由于自己java开发经验不多 看到这个提示怀疑自己是否不注意 在某个地方碰到键盘”L“ 全局搜索并没有找到有错的地方 然后接下来堆栈跟踪:java.lang.NoSuchMethodError:com.citydelivery.deliveryService.ExpressStockService.getWaitSignWaybillList(Ljava/lang/String;)
解决方法
Java使用这些字母在内部对方法签名进行编码.例如,“L”宣布以下“对象”,其由完整的类名称指定,后跟分号. “V”应该在括号前面,并描述一种返回类型“void”.
举个例子:
java.lang.NoSuchMethodError:
org.springframework.web.context.ContextLoader
.getCurrentWebApplicationContext()Lorg/springframework/web/context/WebApplicationContext;
它说,org.springframework.web.context.ContextLoader类中没有方法调用getCurrentWebApplicationContext,它不接受任何参数[由()表示),并返回一个名为“org / springframework / web / context / WebApplicationContext(由’;’关闭).
编辑:所有代码的列表在JNI specs表3.2中.
EDIT2:更加有用:JVM规范的第4.3 Descriptors节包含格式和代码的完整参考.
网友评论