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

相关推荐
Maynor99619 分钟前
OpenClaw 玩家必备:用 AI 自动追踪社区最新动态
java·服务器·人工智能
堕27424 分钟前
java数据结构当中的《排序》(一 )
java·数据结构·排序算法
亓才孓38 分钟前
[Class的应用]获取类的信息
java·开发语言
开开心心就好1 小时前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
80530单词突击赢1 小时前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
爬山算法1 小时前
Hibernate(87)如何在安全测试中使用Hibernate?
java·后端·hibernate
云姜.2 小时前
线程和进程的关系
java·linux·jvm
是码龙不是码农2 小时前
支付防重复下单|5 种幂等性设计方案(从初级到架构级)
java·架构·幂等性
曹牧2 小时前
Spring Boot:如何在Java Controller中处理POST请求?
java·开发语言
heartbeat..2 小时前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范