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