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

Is there a version of postmark java client library which uses jersey 1.x instead of 2.x?

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

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

据我所知,我认为这个错误是因为使用了两个不同(并且可能不兼容)的球衣版本,1.18.6 用于 jersey-server、jersey-guice 和 jersey-bundle 和 2.25.1 for jersey-client(邮戳)。

然后我尝试使球衣版本始终为 1.18,6,所以在我的主项目 pom 中,在包含邮戳依赖项的同时,我排除了 jersey-client(通过添加排除项 header ) 并在我的主项目中单独添加 jersey-client 依赖项。

但是我得到了以下错误:

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

这是我认为 class MultivaluedHashMap 仅存在于 jax-rs 2.x 版本(与球衣 2.x 版本兼容)

所以我的问题是:

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

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

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

正如上面 Mureinik 提到的,当我们在图书馆工作时,我们在 Postmark 的计划是使用更新的图书馆版本,因为它们是长期 运行.

中更好的选择

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

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

通过仅移植 HttpClient class 将库移植到 Jersey 1.x 应该很容易。