NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。
既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。
那么为什么还会出现这个错误?
方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,
就只能说明运行时引用的类里面没有这个方法。
简单的说,就是存在至少两个类名一样的类A和B,其中A有一个need方法,B则没有这个方法。编译时,编译器发现依赖路径下有需要的类A或者B,则编译通过。
但是执行时,在要调用()方法时,因为A和B同名,错误的调用了()方法,这个方法本身是不存在的,自然就出现了NoSuchMethodError这个错误
解决办法:
通过分析可以发现,其实问题产生的根本原因是类有冲突,也就是存在多个满足条件的类A,B,C…
这种情况一般出现在引用某个库或者jar时,同时引用了多个版本而导致的。
解决办法也简单,找出抛出NoSuchMethodError这个异常的类,然后找出包含这个类的所有Jar,然后保留正确的办法,把其他的jar删掉,就可以了。
引申:在Maven项目中,引入依赖时,注意引入依赖顺序是很重要的。
相关文章
- NoSuchMethodError异常解析
- Protobuf动态解析、自描述消息(java版)
- HarmonyOS开发之原生分享:多种实现方法与案例解析-一:概述
- Tsung解析配置文件
- k8s dns 故障 Pod无法解析主机名 Couldn‘t resolve host
- 软件工程考试超全试题库(含答案 和解析)
- HBuilder X解析基础代码以及基础标签(基础篇)
- This is very likely to create a memory leak 异常
- Linux 下 MYSQL workbench 数据导出异常:Could not get mysqldump version
- mongoDB 常见三种异常解析 (附配置)