java.lang.NoSuchMethodError出现的一种诡异情况

java.lang.NoSuchMethodError这种错误出现,很可能就是jar包冲突等等,如果其他方法不好使的话,可以看一下是不是下面这种情况。

三个jar包,A依赖B,B依赖C。例如 A调用B的b方法,B调用C的c方法,都通过maven编译发布,调用一切相安无事。一天,C的c方法变了返回值类型(例如int变成了long)且maven发布。这时在A中编译是没问题的,通过反射也可以取到原来的返回值类型,且类加载路径打印出来没问题,但是运行到c方法时就会报错java.lang.NoSuchMethodError。

解决方案:maven重新编译发布B。

原因:B编译时已经将c的返回值类型编译在字节码中,而A调用是引用的C包已经改变导致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值