我正在搜索具有不同Web服务调用的客户端模块。
该模块实现了WS API,并且大多数API共享一个公共的EnterpriseMessageHeader对象。
我遇到的问题是在运行时遇到的,无法找到特定的方法。当我查看代码并ctrl +将鼠标悬停在EnterpriseMessageHeader对象上时,它显示它引用了错误的POM依赖项。而不是引用第三个依赖。它引用了第一个。
由于所有API共享一个共同的groupID ...有没有办法强制引用/导入比GroupID更低的级别?
如果我将依赖项移动到列表顶部。运行时错误消失,Ctrl + Hover指向正确的依赖关系......
这现在弄乱了我拥有的其他WS实现。
所以你有两个不同的依赖项,它们都有一个具有相同的完全限定名的类(包名和groupId可能重合,但不一定是这种情况 - 真正的问题是两个依赖,无论它们的GAV是什么,包含一个具有相同名称的类)。
这个问题很棘手。 Java不允许您加载这两个类,代码可能会以意想不到的方式中断。
您可以尝试使用maven shade插件重命名依赖项中的一个包,但如果可能的话,通常最好避免尝试避免两个依赖项之一。