经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
【问题解决】java.lang.NoSuchMethodError错误
来源:cnblogs  作者:东北小狐狸  时间:2024/5/13 10:47:55  对本文有异议

问题现象

近期本人负责的一个SpringBoot模块出现了java.lang.NoSuchMethodError报错,问题情况如下:

  • A类提供了setJumpType(String type),B类调用A类的setJumpType(String type)报错java.lang.NoSuchMethodError: com.xxx.A.setJumpType(Ljava/lang/String;)V
  • 在之前的发版的程序中,B类无变更,出现以上问题后,重新编译B类问题解决。

常见该问题原因

  • 方法不存在
  • 方法签名变更(一般博客中只关注到方法名与参数列表)

问题分析

  • 反编译代码和本地IDE源码调试均无该报错出现,方法是存在的
  • 检查A类是否存在方法名称和参数类型、数量变更,发现也没问题
  • 使用javap -v命令分析,经比较之前编译的与新编译的B类调用A类的方法签名中,返回值不同

处理方法

  • 既然这个类是个DTO对象,就可以不直接用对方的DTO,重写一份放自己这边解决该问题
  • 类似的情况只能靠发版前,在测试环境自测功能是否正常,有问题及时发现与解决

问题总结

  • java.lang.NoSuchMethodError错误出现于方法不存在和签名变更的情况
  • 方法签名格式:类路径.方法名(参数列表;)返回值类型
  • 返回值类型:void->V; 引用->L类路径;
  • 方法签名中除了类路径变更会导致ClassNotFound异常外,(方法名、参数列表、返回值类型)发生变化都会引起NoSuchMethodError错误,可根据错误原因进行处理。

原文链接:https://www.cnblogs.com/hellxz/p/18188784

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号