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

相关推荐
前端小张同学3 小时前
餐饮小程序需要你们
java·前端·后端
二十雨辰3 小时前
[SSM]Spring快速入门
java·spring
豆约翰4 小时前
Z字形扫描ccf
java·开发语言·算法
闲人编程4 小时前
权限系统设计与RBAC实现
java·网络·数据库·rbac·权限·codecapsule
nbsaas-boot4 小时前
JWT 与 Session 的实用场景分析:从架构边界到工程落地
java·开发语言·架构
Tim_104 小时前
【C++入门】03、C++整型
java·开发语言·jvm
王中阳Go4 小时前
都2026年了,PHP还纠结转Go还是Java呢?安利一个无缝迁移的框架~
java·后端·go
ss2734 小时前
阻塞队列:三组核心方法全对比
java·数据结构·算法
老华带你飞4 小时前
二手商城|基于springboot 二手商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring