news 2026/4/18 2:47:09

Maven依赖冲突怎么解决?Jar包冲突排查指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Maven依赖冲突怎么解决?Jar包冲突排查指南

Maven依赖冲突怎么解决?Jar包冲突排查指南

项目跑着好好的,突然就报错了:

NoSuchMethodError ClassNotFoundException

别慌,十有八九是Maven依赖冲突。今天教你怎么排查和解决。

为什么会冲突?

假设你的项目同时依赖了A和B两个库:

项目依赖 A 项目依赖 B A 依赖 Guava 30.0 B 依赖 Guava 31.0

Maven只会选一个版本的Guava,但A和B各自需要的版本不同,就可能出问题。

常见报错

NoSuchMethodError:

java.lang.NoSuchMethodError: com.google.common.xxx

原因:运行时加载的类版本和编译时不一致,某个方法在低版本里没有。

ClassNotFoundException:

java.lang.ClassNotFoundException: org.apache.xxx

原因:依赖被排除了或者根本没引入。

排查方法

第一步:查看依赖树

mvn dependency:tree

会显示项目所有依赖的层级关系。

第二步:搜索特定依赖

依赖树太长看不过来,可以过滤:

# 只看guava相关mvn dependency:tree -Dincludes=com.google.guava

第三步:看冲突详情

mvn dependency:tree -Dverbose

会显示被省略的依赖:

+- com.example:lib-a:jar:1.0 | \- com.google.guava:guava:jar:30.0 (被选中) \- com.example:lib-b:jar:2.0 \- (com.google.guava:guava:jar:31.0 - 被省略,和30.0冲突)

这样就能看出谁引入了哪个版本。

解决方法

方法1:排除依赖

让A不要带着它的Guava:

<dependency><groupId>com.example</groupId><artifactId>lib-a</artifactId><version>1.0</version><exclusions><exclusion><groupId>com.google.guava</groupId><artifactId>guava</artifactId></exclusion></exclusions></dependency>

方法2:强制指定版本

在项目中直接声明依赖,覆盖传递依赖:

<!-- 强制使用31.0版本 --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.0-jre</version></dependency>

方法3:用dependencyManagement统一版本

<dependencyManagement><dependencies><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.0-jre</version></dependency></dependencies></dependencyManagement>

所有模块都会使用这个版本。

常见冲突案例

案例1:日志框架冲突

SLF4J: Class path contains multiple SLF4J bindings.

项目里同时有logback和log4j的实现,需要排除一个:

<dependency><groupId>xxx</groupId><artifactId>xxx</artifactId><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency>

案例2:Jackson版本不一致

Incompatible Jackson version

用BOM统一版本:

<dependencyManagement><dependencies><dependency><groupId>com.fasterxml.jackson</groupId><artifactId>jackson-bom</artifactId><version>2.15.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

IDEA插件帮忙

装个Maven Helper插件,可视化看依赖冲突:

  1. 打开pom.xml
  2. 点底部的Dependency Analyzer
  3. 红色的就是冲突的依赖
  4. 右键可以直接排除

比命令行方便多了。

预防措施

1. 用BOM管理版本

SpringBoot项目继承parent就自动管理了很多依赖版本:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.0</version></parent>

2. 定期检查

mvn dependency:analyze

会提示哪些依赖用了但没声明,哪些声明了但没用。

本地没问题服务器报错?

有时候本地好好的,部署到服务器就冲突。可能是服务器环境的jar包和本地不一样。

我用星空组网把本地和服务器连起来,直接SSH上去看:

# 看实际加载了哪个版本的jarcd/app/libls-la|grepguava

或者启动时看类加载:

java -verbose:class -jar app.jar|grepguava

能快速定位是哪个版本被加载了。

小结

依赖冲突排查流程:

  1. mvn dependency:tree -Dincludes=xxx找到冲突
  2. 确定需要的版本
  3. exclusion排除 或 直接声明覆盖
  4. 再次dependency:tree验证

记住:用BOM管理版本能避免大部分冲突。

有问题评论区交流~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 15:23:35

10 个降AI率工具推荐,专科生必看!

10 个降AI率工具推荐&#xff0c;专科生必看&#xff01; 当AI痕迹成为论文的“致命伤” 对于许多专科生来说&#xff0c;写论文从来都不是一件轻松的事。从选题、查资料到撰写、修改&#xff0c;每一个环节都充满了挑战。而如今&#xff0c;随着AI写作工具的普及&#xff0c;越…

作者头像 李华
网站建设 2026/4/16 21:45:36

强化学习第五课 —— A2C A3C:并行化是如何杀死经验回放

在 DQN 称霸的时代&#xff0c;我们为了解决强化学习中样本**“非独立同分布&#xff08;Non-IID&#xff09;”**的问题&#xff0c;不得不引入了一个巨大的外挂硬盘——经验回放池&#xff08;Experience Replay Buffer&#xff09;。 然而&#xff0c;2016 年 DeepMind 推出…

作者头像 李华
网站建设 2026/4/18 5:21:50

9 个开题报告 AI 工具,本科生降AI率推荐

9 个开题报告 AI 工具&#xff0c;本科生降AI率推荐 论文写作的“三座大山”&#xff1a;时间、重复率与自我怀疑 对于本科生而言&#xff0c;撰写开题报告不仅是学术生涯中的重要一环&#xff0c;更是一场与时间赛跑的挑战。从选题到文献综述&#xff0c;从框架搭建到内容撰写…

作者头像 李华
网站建设 2026/4/12 16:32:37

AXI-A7.4.4 ID use for Atomic transactions

上述规则定义了在AXI总线上进行原子操作时,如何管理和使用AXI ID信号,核心目标是确保原子操作的完整性和独立性,同时避免与普通事务产生有害的交互。 1. 单个原子事务使用统一的ID 规则:一个原子事务(包括其请求AW、写响应B和读数据R通道)必须使用同一个ID值。 举例:管…

作者头像 李华
网站建设 2026/4/15 10:31:37

呼吸道合胞病毒(HRSV/BRSV)核心抗原深度解析

人呼吸道合胞病毒&#xff08;HRSV&#xff09;及其在牛中的同源病毒牛呼吸道合胞病毒&#xff08;BRSV&#xff09;是全球范围内引发下呼吸道感染&#xff0c;尤其是在婴幼儿和幼畜中&#xff0c;的主要病原体之一。作为全球生物技术科研试剂与服务供应商&#xff0c;我们致力…

作者头像 李华
网站建设 2026/4/16 11:54:36

GHelper全面升级:华硕ROG笔记本极致性能调校终极指南

GHelper全面升级&#xff1a;华硕ROG笔记本极致性能调校终极指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址…

作者头像 李华