当前位置: 首页 > 知识库问答 >
问题:

从一个依赖项中排除特定类。[重复]

宋耀
2023-03-14

对于一个类,我有两个路径名相同的依赖项。

比如:

import com.a.b.c.d.e.f.MyClass; // this exists in both dependency-1 and dependency-2

当我安装这两个依赖项时,我以错误结束。(如果我只使用1个依赖项,则工作正常)
我需要这两个,因为我需要第二依赖项中的其他包。

在我的maven pom文件中。

// only had this in the past so no issues
<dependency>
    <groupId>com.a.b</groupId>
    <artifactId>dependency-1</artifactId>
    <version>${some.version}</version>
</dependency>

// now adding this cos I need to use some other classes in here. 
<dependency>
    <groupId>com.a.b</groupId>
    <artifactId>dependency-2</artifactId>
    <version>${another.version}</version>
</dependency>

有没有一种方法可以要求排除导致问题的类?

我知道我可以排除这里的另一个依赖项。但是我可以只排除这个导致问题的类吗?
或者至少排除包com. a. b. c. d. e. f?

考虑到两个依赖项有相同的包名和类,也不能使用maven shade。

请建议或如果有一个更好的解决方案。< br >请注意,我不能修改这两个依赖项。

更新:

如上所述。maven阴影在这里不适用。

共有1个答案

戚繁
2023-03-14

你的问题没有直截了当的解决办法。

缺省情况下,Java 在单个类装入器中装入所有类。

您可以尝试创建自定义的类加载器并加载您想要的类,但这是一项复杂的任务。

您可以在单独的类装入器中手动装入其中一个依赖项,这将需要在部署中进行更改。

 类似资料:
  • 例如,我有依赖性:

  • 问题内容: 我有一个项目,该项目依赖于由供应商控制的工件。该工件包含一些我依赖的类,其中一些类较旧并且会引起问题。有没有办法让Maven自动扩展jar,删除类并将它们重新打包为依赖项?我会举一个例子。 所以- 我需要使用在项目网站,但我需要使用从神器。我无法修改Supplier:artifact或us:dependency。 有任何想法吗?! 问题答案: 从版本2.0.9开始,maven保留了类路

  • 是否有一种方法可以使用Gradle从一组中排除特定的jar?我尝试了下面的代码,但这删除了该组的所有jar

  • 我试图用JUnit和SLF4J测试来测试记录器的行为,这是“SLF4J的一个测试实现,它将日志消息存储在内存中,并提供检索它们的方法”。 我有一些将SLF4J作为传递依赖项的依赖项。我试图将SLF4J从我的测试配置中的所有依赖项中排除,但我仍然需要它来进行SLF4J测试。 我可以通过下面的代码将SLF4J排除在所有内容之外,但这显然也将它排除在我需要的SLF4J测试之外。 由于SLF4J是我的许多

  • 目前,如果我试图在Gradle中做类似的事情,排除将被忽略,并且下载所有六个工件。 我使用的是Gradle版本1.8。

  • 我想使用第三方供应商的jar。但是在这个jar中,我有Java包的旧版本我需要找到一些方法将包从主项目中排除。像这样的东西: 你能推荐一些解决方案吗?