java - 如何在一个Java项目中使用多个版本的Jersey(1.8.x和2.15)?

标签 java maven jersey jersey-2.0

我有两个 ma​​ven 项目: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/

相关文章:

java - 拦截复合组件中的拖放事件?

Java 9 - 我可以将 MainClass 属性添加到存档中的 module-info.class 吗?

java - Apache Maven : cannot find symbol and invalid target release error (NetBeans support for Mule Plugin)

java - 使用 Jersey 在 REST 服务中上传多个文件

java - 仅在填写所有字段时使用 JAXB 将 JSON 转换为对象

java - 我希望我的荷官在 BlackJack 游戏中选择何时抓牌时多输入 'intelligent'

java - 如何使用 safari 技术预览执行 selenium 自动化脚本(java)?

java - JAVA中使用反向引用的递归组捕获正则表达式

java - 具有多个模块的 Maven 包名称

java - Jersey:如何在不更改地址栏中的 URL 的情况下重定向/转发