java.lang.NoSuchFieldError
java.lang.NoSuchMethodError
这个错偶尔会遇到,遇到会觉得很莫名其妙,使用Maven的过程中,可能更容易出现。
这个错出现只有一种情况。
你编译和运行使用的不是相同的jar包
运行时的jar包没有包含该字段或方法
所以你IDE中没有任何错误,但是运行就出错。
为什么会这样?
可能有下面两种情况:
- 你项目中有同一个jar包的不同版本,因此编译和运行时使用了不同的jar包。
- 你用的maven,项目中的依赖由于使用了不同版本的包,最后打包的时候使用的不是你需要的版本,所以也会出错。
如何解决
知道上面原因后解决起来也容易。
第一种就是检查jar包是否有重复的,只留一个你需要的版本。
第二种Maven的稍微复杂,因为需要找依赖,可能会有依赖的依赖,如果你使用IDEA,你可以右键生成依赖图,使用Ctrl+F
搜索包的名字,然后判断屏蔽那些依赖。如果你用的Eclipse,依赖视图可能不如IDEA方便,说不定就得一个个找。