我有两个 maven 项目:projA 和 projB
projB 取决于 projA
projB 取决于 Jersey 2.15
projA 依赖于 hbase-testing-utils
hbase-testing-utils 依赖于 Jersey 1.8.x
如果projB在没有任何排除的情况下声明对projA的依赖,则projB的测试会失败,因为它们使用了Jersey项目中某些类的错误版本(1.8.x)。
如果 projB 声明对 projA 的依赖,并排除 Jersey 组件,则上述问题就会消失。但新的问题是,在测试运行期间,由于排除,projA无法找到ServletContainer(Jersey 1.8.x)。 projA 使用 hbase 测试工具来启动内存中的 hbase 服务器,该服务器底层使用 Jersey 1.8.x。
我需要在 projB 中使用 Jersey 2.15,但我还需要从 projA 中排除 Jersey 1.8.x,以避免由于使用错误的版本类而导致空指针异常。
如何解决这个问题?
最佳答案
Jersey 2 是 JAX-RS 2 的实现。Jersey 1.8 是 JAX-RS 1 的实现。JAX-RS 2 不向后兼容,并且某些方法签名相互冲突。您不能将 Jersy1.8 和 Jersey2 包含在同一个项目中。它将编译,但在运行时会失败。
关于java - 如何在一个Java项目中使用多个版本的Jersey(1.8.x和2.15)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28572781/