java.lang.NoSuchFieldError 和 NoSuchMethodError

来源:互联网 发布:软件导刊版面费 编辑:程序博客网 时间:2024/05/15 23:37

java.lang.NoSuchFieldError

java.lang.NoSuchMethodError

这个错偶尔会遇到,遇到会觉得很莫名其妙,使用Maven的过程中,可能更容易出现。

这个错出现只有一种情况。

你编译和运行使用的不是相同的jar包

运行时的jar包没有包含该字段或方法

所以你IDE中没有任何错误,但是运行就出错。

为什么会这样?

可能有下面两种情况:

  • 你项目中有同一个jar包的不同版本,因此编译和运行时使用了不同的jar包。

  • 你用的maven,项目中的依赖由于使用了不同版本的包,最后打包的时候使用的不是你需要的版本,所以也会出错。

如何解决

知道上面原因后解决起来也容易。

第一种就是检查jar包是否有重复的,只留一个你需要的版本。

第二种Maven的稍微复杂,因为需要找依赖,可能会有依赖的依赖,如果你使用IDEA,你可以右键生成依赖图,使用Ctrl+F搜索包的名字,然后判断屏蔽那些依赖。如果你用的Eclipse,依赖视图可能不如IDEA方便,说不定就得一个个找。

1 0