java.lang.NoSuchFieldError 和 NoSuchMethodError

本文详细解释了在使用Maven过程中,Java编译和运行时使用不同jar包导致NoSuchFieldError和NoSuchMethodError的原因,并提供了两种解决方案:一是检查并保留所需的jar包版本;二是对于Maven项目,通过IDEA的依赖图或Eclipse的依赖视图来找出并屏蔽不必要的依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.NoSuchFieldError

java.lang.NoSuchMethodError

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

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

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

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

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

为什么会这样?

可能有下面两种情况:

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

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

如何解决

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值