NoSuchMethodError

NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。

既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。

那么唯一的可能

原因

方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,就只能说明运行时引用的类里面没有这个方法。

这说起来有点拗口,简单的说,就是存在至少两个类名一样的类A和B,其中A有一个方法,B则没有这个方法。编译时,编译器发现依赖路径下有需要的类A或者B,则编译通过。

但是执行时,在要调用A方法时,因为A和B同名,错误的调用了B.方法,这个方法本身是不存在的,自然就出现了NoSuchMethodError这个错误

解决办法

通过分析可以发现,其实问题产生的根本原因是类有冲突,也就是存在多个满足条件的类A,B,C..

这种情况一般出现在引用某个库或者jar时,同时引用了多个版本而导致的。

解决办法也简单,找出抛出NoSuchMethodError这个异常的类,然后找出包含这个类的所有Jar,然后保留正确的办法,把其他的jar删掉,就可以了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值