两个具有相似包结构的罐子。运行时调用了错误的类

问题描述 投票:0回答:1

我有以下 springboot 应用程序

Parent
-- ReportAnalytics which has the main method
-- diffToolv1 (has getDifference REST api end point) : dependency on jar1
-- diffToolv2 (has getDifferenceV2 REST api end point) : dependency on jar2

jar1 和 jar2 都有一个包

inspector

现在,当我调用 diffToolv1 中的方法时,它引用的是 jar2 中的

inspector
包的类。这可能是因为springboot初始化时,jar2先于jar1加载。

我无法修改依赖项中的包名称。

我有什么选择?

我尝试过的事情:

chatgpt 给出了不同的策略,但这些策略都行不通。这是列表:

  1. 类路径排序:我想要类路径中的两个罐子
  2. 排除或删除冲突的 JAR:同上
  3. 使用完全限定的类名:我希望可以在导入语句中使用 jar 名称
  4. 自定义类加载器:两个 jar 都需要加载。所以我不确定。
  5. 重命名包:它们不是我的包。我无法修改它们。
  6. 调试:我已经验证 jar2 类是从 diffToolv1 调用的。
java spring-boot maven jar
1个回答
0
投票

使用像 https://github.com/shevek/jarjar 这样的工具在构建时重命名其中一个类。如果您无法控制源代码并且无法更改类的名称,这可能是一个很好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.