java - 如何在特定的 POM 依赖项上导入特定的类?

标签 java maven intellij-idea

我正在丰富一个具有不同 WebService 调用的客户端模块。

该模块实现 WS API,并且大多数 API 共享一个公共(public) EnterpriseMessageHeader 对象。

我遇到的问题是在运行时遇到的,找不到特定的方法。 当我查看代码并将鼠标悬停在 EnterpriseMessageHeader 对象上时,它表明它引用了不正确的 POM 依赖项。而不是引用第三个依赖项。它引用了第一个。

由于所有 API 共享一个通用的 groupID...是否有办法强制在比 GroupID 更低的级别上引用/导入?

如果我将依赖项移至列表顶部。运行时错误消失,Ctrl+Hover 指向正确的依赖项...

这现在弄乱了我拥有的其他 WS 实现。

最佳答案

因此,您有两个不同的依赖项,它们都有一个具有相同完全限定名称的类(包名称和 groupId 可能一致,但情况不一定如此 - 真正的问题是两个依赖项,无论它们的 GAV 如何)可能包含一个同名的类)。

这个问题是一个棘手的问题。 Java 不允许您同时加载两个类,并且代码可能会以意想不到的方式中断。

您可以尝试使用 Maven Shade 插件重命名依赖项中的某个包,但如果可能的话,通常最好尝试避免这两个依赖项之一。

关于java - 如何在特定的 POM 依赖项上导入特定的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55832786/

相关文章:

java - 如何给JBoss打JDK 6补丁

java - 如何在 Spring Bean 中获取 Mules Logger 实例?

java - 将二进制转换为 ascii,ascii 中的旋转字符串 - java

Java docker 与 jar 加载 main

java - 与 IntelliJ 错误的基本 Maven 集成

maven - 找不到符号构造函数 Service(URL,QName,WebServiceFeature[])

java - 从 Java 调用 python 模块

java - 使用 Maven 的可执行 jar 中资源文件的相对路径问题

java - 如何从命令行将 VM 参数传递给 gradle?

angular - Intellij Ultimate 2020.1中带有Angular的断点