maven多依赖,由于包路径一样,导致引入类错乱

这个问题是典型的 JAR 包类冲突(Classpath Conflict)

强制让正确版本的类被优先加载

Maven 默认按 依赖声明顺序依赖深度 决定类路径顺序("nearest wins")。你可以:

✅ 在 pom.xml先声明 依赖A,再声明 依赖B
XML 复制代码
<dependencies>
  <!-- 先声明你想要的版本 -->
  <dependency>
    依赖A
  </dependency>

  <!-- 后声明 (它的 Utils 会被忽略) -->
  <dependency>
    依赖B
  </dependency>
</dependencies>

📌 Maven 的"最近优先"原则 :如果两个依赖提供同名类,在 classpath 中排在前面的 JAR 会被优先加载

虽然 Maven 不保证严格顺序,但在大多数情况下,先声明的依赖会排在前面

🔍 如何确认哪个 Utils 被加载?

在代码中加一行调试:

XML 复制代码
System.out.println(Utils.class.getProtectionDomain().getCodeSource().getLocation());

输出会告诉你这个类来自哪个 JAR 文件

<exclusion>(如果可行)

XML 复制代码
<dependency>
  依赖B
  <exclusions>
    <exclusion>
      <groupId>org.xx</groupId>
      <artifactId>*</artifactId>
    </exclusion>
    <!-- 或具体排除 -->
    <exclusion>
      <groupId>org.xx.tool</groupId>
      <artifactId>xx-xx-xx</artifactId>
    </exclusion>
  </exclusions>
</dependency>

⚠️ 如果 xx-xx-xx内部直接打包了 class(不是依赖),<exclusion> 无效

相关推荐
2501_9418824817 分钟前
从灰度发布到流量切分的互联网工程语法控制与多语言实现实践思路随笔分享
java·开发语言
華勳全栈35 分钟前
两天开发完成智能体平台
java·spring·go
alonewolf_9940 分钟前
Spring MVC重点功能底层源码深度解析
java·spring·mvc
沛沛老爹1 小时前
Java泛型擦除:原理、实践与应对策略
java·开发语言·人工智能·企业开发·发展趋势·技术原理
专注_每天进步一点点1 小时前
【java开发】写接口文档的札记
java·开发语言
代码方舟1 小时前
Java企业级实战:对接天远名下车辆数量查询API构建自动化风控中台
java·大数据·开发语言·自动化
zgl_200537791 小时前
ZGLanguage 解析SQL数据血缘 之 标识提取SQL语句中的目标表
java·大数据·数据库·数据仓库·hadoop·sql·源代码管理
liwulin05061 小时前
【JAVA】创建一个不需要依赖的websocket服务器接收音频文件
java·服务器·websocket
钦拆大仁1 小时前
统一数据返回格式和统一异常处理
java
czlczl200209251 小时前
OAuth 2.0 解析:后端开发者视角的原理与流程讲解
java·spring boot·后端