CXF ClassNotFoundException:javax.ws.rs.MessageProcessingException

Cru*_*ing 5 java cxf jax-rs jax-ws

我正在尝试启动一个jax ws&rs服务器端点,我可以使用rs-api 2.0(和版本2.0.1)启动它们,但是当我尝试发出请求时,它会抛出

java.lang.NoClassDefFoundError: javax/ws/rs/MessageProcessingException  
Run Code Online (Sandbox Code Playgroud)

SO中还有其他一些线程可以解决此问题,但这些建议对我不起作用。使用任何rs-api 2里程碑版本都会引发问题

Exception in thread "main" java.lang.NoClassDefFoundError: javax/ws/rs/BadRequestException
Run Code Online (Sandbox Code Playgroud)

我将其作为Java应用程序而不是Web应用程序运行。有人有什么想法可以尝试吗?谢谢

编辑:我的依赖项。我添加了jsr311,但这并没有改变MessageProcessingException

 <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>
    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>

    CXF: version 2.7.0
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxrs</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-ws-security</artifactId>
    </dependency>

    rs-api version: 2.0
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
    </dependency>

    jsr311 version: 1.1.1
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

Car*_*rda 1

我在没有 JSON/JAXB 提供程序的情况下使用 Jersey 客户端来调用服务器时遇到了同样的错误,当我配置 Jettison 提供程序时,问题得到了解决。当我使用不兼容的 POJO 封送对象来调用服务时,也会发生此错误。核实。我希望这有帮助。

当你有Classloader问题时也会出现这个问题,检查你的jax-rs的maven依赖层次结构冲突。就我而言,我需要在 pom.xml 中使用排除过滤器,例如

<exclusions>
    <exclusion>
        <artifactId>javax.ws.rs-api</artifactId>
        <groupId>javax.ws.rs</groupId>
    </exclusion>
</exclusions>
Run Code Online (Sandbox Code Playgroud)

我在另一个使用 javax.ws.rs-api 依赖项的项目中对 cxf-bundle-jaxrs 进行了排除。使用 cxf-rt-frontend-jaxrs:2.7.11 的依赖项就足够了。