gpt4 book ai didi

maven - 如何为 Jersey Jax-RS maven 项目添加 JSR-311 依赖项

转载 作者:行者123 更新时间:2023-12-01 01:12:02 25 4
gpt4 key购买 nike

以下问题讨论了 Jersey 和 JAX-RS 规范之间的依赖关系理论:

  • JAX-RS in relation to Jersey and JSRs

  • 我假设我可以添加依赖项:
      <!--  javax.ws.rs.core e.g. Request -->
    <dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>jsr311-api</artifactId>
    <version>1.0</version>
    </dependency>

    到我的 API 定义 maven 项目并使用 Jersey/Grizzly 进行实现。
        <jersey.version>1.15</jersey.version>
    <grizzly.version>2.2.20</grizzly.version>

    与此假设相反,我收到以下错误消息:
    15.02.2013 08:41:25 org.glassfish.grizzly.http.server.HttpServerFilter handleRead
    WARNUNG: Unexpected error
    java.lang.IncompatibleClassChangeError: Class javax.ws.rs.core.Response$Status does not implement the requested interface javax.ws.rs.core.Response$StatusType
    at com.sun.jersey.spi.container.ContainerResponse.getStatus(ContainerResponse.java:571)

    应该与 Jersey 1.15 一起使用的正确 JAX-RS API 依赖项是什么?

    我想以一种可以将实现替换为任何其他符合 JAX-RS 的库的方式来实现。

    最佳答案

    问题是您的 JSR 311 API 依赖项是 1.0 版,而 Jersey 1.15 是 JSR 311 1.1 版实现。比较 http://jsr311.java.net/nonav/releases/1.0/javax/ws/rs/core/Response.Status.htmlhttp://jsr311.java.net/nonav/releases/1.1/javax/ws/rs/core/Response.Status.html , 你会看到后者实现了 ResponseType界面,但前者没有。

    通过声明如下内容,您应该能够在构建时类路径上拥有 JSR 311 版本 1.1.1 API 类文件:

    <dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>jsr311-api</artifactId>
    <version>1.1.1</version>
    <scope>provided</scope>
    </dependency>

    事实上, Jersey 核心 pom.xml已经这样做了 - 以上只是 http://repo1.maven.org/maven2/com/sun/jersey/jersey-core/1.15/jersey-core-1.15.pom 中的第一个依赖项.

    在像 Glassfish 这样的容器中,您现在已经完成了,因为该容器将负责在运行时为您提供 API 类(这就是为什么 jersey 自己的 Maven POM 中的范围是 provided ,而不是 compile )。但是,对于 Grizzly Web 容器,您可能需要确保 API 类在运行时可用(通过使用上面的 <dependency> 声明,但将 <scope>provided 更改为 compile 即可这)。

    关于maven - 如何为 Jersey Jax-RS maven 项目添加 JSR-311 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14890438/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com