IDEA Maven Helper插件 解决jar冲突

Jar包冲突报错

java 复制代码
程序抛出java.lang.ClassNotFoundException异常;
程序抛出java.lang.NoSuchMethodError异常;
程序抛出java.lang.NoClassDefFoundError异常;
程序抛出java.lang.LinkageError异常等;

Maven Jar包管理机制

在Maven项目中,想要了解Jar冲突必须得先了解一下Maven是如何管理的Jar包的。这涉及到Maven的一些特性,比如依赖传递、最短路径优先原则、最先声明原则等。

依赖传递原则

当在Maven项目中引入A的依赖,A的依赖通常又会引入B的jar包,B可能还会引入C的jar包。这样,当你在pom.xml文件中添加了A的依赖,Maven会自动的帮你把所有相关的依赖都添加进来。

最短路径优先原则

依赖链路一:主要根据依赖的路径长短来决定引入哪个依赖(两个冲突的依赖)。

举例说明:

依赖链路一:A -> X -> Y -> Z(21.0)

依赖链路二:B -> Q -> Z(20.0)

项目中同时引入了A和B两个依赖,它们间接都引入了Z依赖,但由于B的依赖链路比较短,因此最终生效的是Z(20.0)版本。这就是最短路径优先原则。

此时如果Z的21.0版本和20.0版本区别较大,那么就会发生Jar包冲突的表现。

最先声明优先原则

如果两个依赖的路径一样,最短路径优先原则是无法进行判断的,此时需要使用最先声明优先原则,也就是说,谁的声明在前则优先选择。

举例说明:

依赖链路一:A -> X -> Z(21.0)

依赖链路二:B -> Q -> Z(20.0)

A和B最终都依赖Z,此时A的声明(pom中引入的顺序)优先于B,则针对冲突的Z会优先引入Z(21.0)。

如果Z(21.0)向下兼容Z(20.0),则不会出现Jar包冲突问题。但如果将B声明放前面,则有可能会发生Jar包冲突。

Maven helper安装

解决冲突

找到POM文件,点击 Dependency Analyzer ,同时选择All Dependencies as TreeConflicts,找到Jump Source,根据上面的几个原则,找到冲突Jar包,进行调整

相关推荐
南知意-9 小时前
IDEA 2025.3 版本安装指南(完整图文教程)
java·intellij-idea·开发工具·idea安装
砚边数影15 小时前
AI开发依赖引入:DL4J / Java-ML 框架 Maven 坐标配置
java·数据库·人工智能·深度学习·机器学习·ai·maven
java_t_t17 小时前
Maven插件apiscan介绍与使用
java·maven·api文档·maven插件
H Corey19 小时前
Java--面向对象之继承与多态
java·开发语言·windows·学习·算法·intellij-idea
吴声子夜歌21 小时前
Maven——pom.xml详解
xml·java·maven
岁岁种桃花儿21 小时前
Maven 依赖作用域实战避坑指南
java·maven
小旭95271 天前
【Java 面试高频考点】finally 与 return 执行顺序 解析
java·开发语言·jvm·面试·intellij-idea
计算机毕设指导61 天前
基于微信小程序技术校园拼车系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
计算机毕设指导61 天前
基于微信小程序求职招聘-兼职管理系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·求职招聘
深念Y1 天前
IDEA下载JDK慢的真相:权限、DNS与CDN的解析
java·ide·intellij-idea