【问题标题】:Is there a version of postmark java client library which uses jersey 1.x instead of 2.x?是否有使用 jersey 1.x 而不是 2.x 的邮戳 java 客户端库版本?
【发布时间】:2018-11-21 10:03:27
【问题描述】:

我在使用 jersey 1.18.6 的 google app-engine 上部署了一个 RESTful Web 服务应用程序。 我想使用邮戳 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球衣客户(按邮戳)。

然后我尝试将球衣版本全部设置为 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 的 postmark java 客户端库版本?

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

【问题讨论】:

    标签: maven jersey jax-rs postmark


    【解决方案1】:

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

    通过仅移植您身边的 HttpClient 类,将库移植到 Jersey 1.x 应该很容易。

    【讨论】:

      【解决方案2】:

      正如上面提到的Mureinik,当我们在开发库时,我们在 Postmark 的计划是使用更新的库版本,因为从长远来看它们是更好的选择。

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 那么有什么方法可以在我的项目中使用邮戳,而无需将我的依赖项更新到 jersey 2.x?
        • 在这种情况下常用的一种技术是着色。在这里解释有点过于宽泛,但请尝试阅读:maven.apache.org/plugins/maven-shade-plugin
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2021-07-04
        • 1970-01-01
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        相关资源
        最近更新 更多