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> 无效

相关推荐
有味道的男人13 小时前
1688获得商品类目调取商品榜单
java·前端·spring
独自破碎E13 小时前
【中心扩展法】LCR_020_回文子串
java·开发语言
不光头强13 小时前
spring boot项目欢迎页设置方式
java·spring boot·后端
4311媒体网13 小时前
自动收藏功能的实现方法
java·开发语言
Yana.nice13 小时前
证书格式的适用场景与核心对比
java·linux
怪兽毕设13 小时前
基于SpringBoot的选课调查系统
java·vue.js·spring boot·后端·node.js·选课调查系统
DFT计算杂谈13 小时前
VASP+PHONOPY+pypolymlpj计算不同温度下声子谱,附批处理脚本
java·前端·数据库·人工智能·python
cyforkk13 小时前
13、Java 基础硬核复习:泛型(类型安全)的核心逻辑与面试考点
java·开发语言·面试
程序员徐师兄13 小时前
Windows JDK17 下载安装教程,附详细图文
java·windows·jdk17 下载安装·java17 下载安装教程
IManiy13 小时前
总结之Temporal实现全局速率控制方案(一)
java