是否有使用jersey 1.x而不是2.x的邮戳java客户端库的版本?

时间:2018-06-12 05:32:14

标签: maven jersey jax-rs postmark

我在google app-engine上部署了一个使用jersey 1.18.6的Java中的RESTful Web服务应用程序。 我想使用邮戳java客户端从它发送交易电子邮件。 当我整合它时,我看到了以下异常:

javax.ws.rs.core.Response$Status$Family.familyOf(I)Ljavax/ws/rs/core/Response$Status$Family

从我能找到的,我认为这个错误是因为有两种不同的(可能是不兼容的)版本的球衣被使用,1.18.6用于球衣服务器,球衣 - 球衣和球衣 - 束和2.25.1为泽西客户(邮戳)。

然后我试图制作整个版本的1.18,6,所以在我的主项目pom中,虽然包含了邮戳的依赖关系,但我排除了jersey-client(添加了排除标题)并单独添加了jersey-client依赖关系在我的主要项目中。

但后来我收到了以下错误:

java.lang.NoClassDefFoundError: javax/ws/rs/core/MultivaluedHashMap

我认为MultivaluedHashMap类仅存在于jax-rs 2.x版本(与jersey 2.x版本兼容)

所以我的问题是:

  1. 是否有使用jersey 1.x而不是jersey 2.x的邮戳java客户端库的版本?

  2. 如果没有,那么除了将我的主项目从jersey 1.x迁移到jersey 2.x之外,我还有哪些选项。我不想这样做,因为我们不仅要迁移球衣依赖,而且还要考虑其他一些比如guice,shiro等耗时的东西。此外,修改多个现有依赖项只是为了包含一个额外的模块,它似乎并不是最佳的。

3 个答案:

答案 0 :(得分:1)

没有。 very first commit of the project's pom.xml已使用Jersey 2.25.1

答案 1 :(得分:0)

上面提到的Mureinik,当我们在图书馆工作时,我们在Postmark的计划是使用更新的库版本,因为从长远来看它们是更好的选择。

在我们的Github page鲁珀特提出了很好的建议,从中我发现单独的ClassLoader是一个不错的选择。在接下来的几天里,我将在兼容性方面使用库代码,但是我们总是支持为代码库使用更新的库。

答案 2 :(得分:0)

请查看我对Github问题页面的最新评论,了解使用旧泽西版https://github.com/wildbit/postmark-java/issues/11的可能解决方案

通过只移植你身边的HttpClient类,将文件库移植到Jersey 1.x应该很容易。