jar 包冲突 java.lang.NoSuchFieldError

 java.lang.NoSuchFieldError: INSTANCE异常,可能是jar包冲突了。

我遇到的情况是maven里引入了一个JAR,而我又在lib里面引入了这个jar,并且版本还不相同,就出了这个错。


解决办法:

1


mvn dependency:tree -dverbose



后来在看另外一个文章的时候,有人提到最好用\-来表示同一层依赖的最后一个节点,一下子意识到上面的mvn命令输出中的\-应该就是这个意思。

何为同一层依赖的最后一个节点?打个可能不太恰当的比喻:他是他爸最小的儿子


递归依赖的关系列的算是比较清楚了,每行都是一个jar包,根据缩进可以看到依赖的关系。

  • 最后写着compile的就是编译成功的。
  • 最后写着omitted for duplicate的就是有jar包被重复依赖了,但是jar包的版本是一样的。
  • 最后写着omitted for conflict with xxxx的,说明和别的jar包版本冲突了,而该行的jar包不会被引入。 (org.apache.poi:poi-ooxml-schemas:jar:3.15:compile - omitted for conflict with 3.14
  • 比如上面有一行最后写着omitted for conflict with 3.14, 与 3.15 冲突了



2

(1)  安装使用插件 maven Helper 插件, 重新启动idea 后插件才能生效


(2)

在IntelliJ中打开项目的pom.xml文件,在文件编辑器的左下方,会看到两个tab,一个是“Text”,另一个是“Dependency Analyzer”:

红颜色表示 底层的jar 引用冲突  

右键,可以查看 和 exclison




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值