IDEA Maven Helper插件 解决jar冲突

Jar包冲突报错

程序抛出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包,进行调整
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/270412.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式--工厂方法模式

实验3:工厂方法模式 本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解工厂方法模式的动机,掌握该模式的结构; 2、能够利用工厂方法模式解决实际问题。 [实验任务]:加密算法 目前常用…

数据库管理-第127期 LSM Tree(202301225)

数据库管理-第127期 LSM Tree(202301225) 说起分布式数据库,绕不开的一个话题就是LSM Tree,全称为log-structured merge-tree,回到吕海波老师授权过的那句话“没搞过Oracle的,但又是数据库圈里的人&#x…

《我在北京送快递》平凡隽永的时刻,对人生更具意义

《我在北京送快递》平凡隽永的时刻,对人生更具意义 胡安焉 文章目录 《我在北京送快递》平凡隽永的时刻,对人生更具意义[toc]摘录感悟 摘录 转“没有期限的承诺无疑就是委婉的拒绝” 转书友:亨利福特说,我聘的是一双手&#xff0…

基于 FFmpeg 的跨平台视频播放器简明教程(十二):Android SurfaceView 显示图片和播放视频

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…

LeetCode-回文链表(234)

题目描述: 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 因为这一题是受到876题求链表中间节点的启发,所以在这里也加一下。 876.链表的中间结点…

格密码:傅里叶矩阵

目录 一. 铺垫性介绍 1.1 傅里叶级数 1.2 傅里叶矩阵的来源 二. 格基与傅里叶矩阵 2.1 傅里叶矩阵详细解释 2.2 格基与傅里叶矩阵 写在前面:有关傅里叶变换的解释太多了,这篇博客主要总结傅里叶矩阵在格密码中的运用。对于有一定傅里叶变换基础的同…

python 解决手机拍的书籍图片发灰的问题

老师给发的作业经常是手机拍的,而不是扫描,背景发灰,如果二次打印就没有看了,象这样: 如果使用photoshop 处理,有些地方还是扣不干净,不如python 做的好,处理后如下: 具体…

一个基于多接口的业务自动化测试框架!

这是一个成熟的框架,不是要让别人当小白鼠,它已经先后在两家公司的5条业务线进行了推广应用,用例条数到了几千条以上,并且从2018年开始每天都在CI/CD流程中被调用执行。 已有那么多接口测试框架,为什么重复造轮子&…

详解Java反射机制reflect(一学就会,通俗易懂)

1.定义 #2. 获取Class对象的三种方式 sout(c1)结果为class com.itheima.d2_reflect.TestClass 获取到了Class对象就相当于获取到了该类 2.获取类的构造器 3.获取全部构造器对象 2.根据参数类型获取构造器对象 类型后必须加.class 3.构造器对象调用构造器方法 4.暴力访问 4.获…

11-GraalVM元原生时代的Java虚拟机

文章目录 GraalVM诞生的背景Java在微服务/云原生时代的困境事实矛盾 问题根源Java离不开虚拟机 解决方案革命派保守派 GraalVM入门GraalVM特征GraalVM下载和安装GraalVM下载win10安装及配置linux安装及配置 GraalVM初体验(Linux)多语言开发(了解即可、官网有Demo)GraalCompiler…

【Gitlab】CICD流水线自动化部署教程

第一步,准备 GitLab 仓库 这个不用多说,得先保证你的项目已经托管在一个 GitLab 仓库中。 第二步,定义 .gitlab-ci.yml 文件 在你的项目根目录中创建一个 .gitlab-ci.yml 文件。这个文件将定义所有 CI/CD 的工作流程,包括构建、测…

连锁餐饮数字化:一体化运营管控平台

内容来自演讲:刘腾飞 | 上海奥谱创网络科技有限公司 | CEO 摘要 本文介绍了企业级管理系统的需求和现状,以及如何通过数据指标为依据的改善循环来优化企业的运营。文章还提出了场景驱动、迭代上线的方法,并介绍了两个平台、三个统一的解决方…

RK3568平台开发系列讲解(Linux系统篇)Linux 热拔插机制 mdev的使能

🚀返回专栏总目录 文章目录 一、什么是热插拔二、热插拔的机制三、mdev的开启沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 Linux 热拔插。 一、什么是热插拔 热插拔是指在设备运行的情况下,能够安全地插入或拔出硬件设备,而无需关闭或重启系统。这意…

自动驾驶中的“雷达”

自动驾驶中有好几种雷达,新手可能会蒙蔽,这里统一介绍一下它们。 首先,所有雷达的原理都是发射波,接收回波,并通过发射和接收的时间差以及波的速度计算距离。只不过发射的波不同,功能也不同。 激光雷达 …

kubelet源码学习(二):kubelet创建Pod流程

本文基于Kubernetes v1.22.4版本进行源码学习 4、kubelet创建Pod流程 syncLoop()的主要逻辑是在syncLoopIteration()方法中实现,Pod创建相关代码只需要看处理configCh部分的代码 // pkg/kubelet/kubelet.go // 该方法会监听多个channel,当发现任何一个channel有数…

Jenkins的特殊操作定时自动执行任务以及测试报告调优

java -Dhudson.model.DirectoryBrowserSupport.CSP -jar Jenkins.war 测试报告 不美丽 执行上面的代码 重启jenkins 就好了

基于SpringBoot+Vue实现的电影院售票系统

文章目录 项目介绍影院管理影片管理影厅管理订单管理用户管理角色权限管理 技术选型成果展示前台系统后台管理系统 账号及其他说明 项目介绍 基于SpringBootVue实现的电影院售票系统整体设计了用户、管理员两个角色。 用户登录系统可进行电影查看、分类查看、影片搜索、选择影…

如何解决HTTP 404错误,这里给出详细解决办法

404错误是一个HTTP状态代码,这意味着你试图在网站上访问的页面在他们的服务器上找不到。 需要明确的是,该错误表示虽然服务器本身是可访问的,但显示该错误的特定页面是不可访问的。 个别网站经常自定义这个错误信息。所以,请记住,错误可能会以任何可以想象的方式出现,这…

SDCMS靶场漏洞挖掘

昨天才打完了khbc靶场,今天就马上投入到sdcms靶场,通过这个靶场,还是有不少的感悟的,下面,我们就以网安小白的身份来审视一下这个靶场!! ​​​​​​​ ​​​​​​​ ​​​​…

【华为机试】2023年真题B卷(python)-发广播

一、题目 题目描述: 某地有N个广播站,站点之间有些有连接,有些没有。有连接的站点在接受到广播后会互相发送。 给定一个N*N的二维数组matrix,数组的元素都是字符’0’或者’1’。 matrix[i][j]‘1’,则代表i和j站点之间有连接,mat…