java.lang.NoSuchMethodError的可能原因

java.lang.NoSuchMethodError: com.xxx.xxx.xxx.IMethodA(Lcom/xxx/xxx/xxx/xxx/xxx/classA;)Z

代码在本地没问题,但是打成jar包下发上线运行就报这个错。
原因是修改了一个接口方法的入参类型或返回类型后,所有用到这个接口的类的都需要重新编译。比如我标题里的methodA,他原本返回类型是boolean型,但现在我把他改为Boolean型,那么如果我在ClassB中用到了methodA,就需要重新编译ClassB。
顺带附上这个方法报错里各种字母的解释

标志符类型
B基本数据类型byte
C基本数据类型byte
D基本数据类型byte
F基本数据类型byte
I基本数据类型byte
J基本数据类型byte
S基本数据类型byte
Z基本数据类型byte
V基本数据类型byte
L对象类型,如Ljava/lang/Object,Ljava/lang/Boolean

更详细的内容可参见从一个class文件深入理解Java字节码结构
这篇文章的4.3.2节,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值