java 异常

**

java.lang.NoSuchMethodError: xxx.setXxx(I)V

**

项目一直运行得很正常,突然有一天有报错了,查看日志:

在这里插入图片描述
查看报错的代码,发现并没有异常之处,同样的请求在开发环境中顺畅无阻。
然后面向百度编程:查了很多文章都没有找到自己想要的结果,总结大致就以下几种情况:

1、jar包冲突?
排查后第一时间确认不是

2、开发环境和生产环境不一致?
再次确认生产环境和开发环境都是一致的,由于上一次是其它同事更新的,询问后大家使用的版本及编译的版本都是一致的。

3、看问题说明就是 setMoney 这个方法找不到。难不成使用了lombok,idea没编译成功?
拿回生产环境的class文件进行反编译发现有 setMoney 这个方法。

4、难不成真的是方法签名的问题?但是开发环境没问题啊。试试看吧!

于是分别打印了
生产环境class文件的方法签名:
(root> javap -s xxx.class)
生产环境的class
开发环境class文件的方法签名:

开发环境的class
没错:它们不一样!!! 真特么是方法签名的问题:

最后重新编译覆盖class文件,问题得到解决!

恍惚间想起昨天更新的时候只更新了调用方的class类文件,而 setMoney(Integer)
改成了 setMoney(int) 并没有更新。

自以为Integer也能接受 int 参数,就懒得去更新。结果就出现了上面的情况。

最后:只能怪自己太渣!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值