CXF ClassNotFoundException:javax.ws.rs.MessageProcessingException

时间:2015-03-14 22:02:02

标签: java cxf jax-rs jax-ws

我试图开始使用jax ws& rs服务器端点,我可以使用rs-api 2.0(和版本2.0.1)开始使用它,但是当我尝试发出请求时它会抛出

java.lang.NoClassDefFoundError: javax/ws/rs/MessageProcessingException  

关于此事,SO还有一些其他主题,但这些建议对我不起作用。使用任何rs-api 2里程碑版本都会引发问题

Exception in thread "main" java.lang.NoClassDefFoundError: javax/ws/rs/BadRequestException

我将其作为java应用程序运行,而不是webapp。任何人有任何想法尝试?感谢

编辑:我的依赖。我添加了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>

4 个答案:

答案 0 :(得分:3)

面临同样的问题,但后来当我使用 cxf-bundle 3.0.0-milestone2 2.1-m01 javax.ws.rs-api ,它就像一个魅力。

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.1-m01</version>
</dependency>

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-bundle</artifactId>
    <version>3.0.0-milestone2</version>
</dependency>

答案 1 :(得分:2)

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

此版本支持javax.ws.rs.MessageProcessingException类。

答案 2 :(得分:1)

我使用没有JSON / JAXB提供程序的Jersey客户端进行同样的错误来调用服务器,当我配置Jettison提供程序时,问题解决了。当我使用不兼容的POJO来编组对象来调用服务时,这个错误也会出现。核实。我希望这有帮助。

当您遇到Classloader问题时,也会出现问题,请检查jax-rs的maven依赖层次结构冲突。在我的情况下,我需要在我的pom.xml中使用exlcusion过滤器,如

<exclusions>
    <exclusion>
        <artifactId>javax.ws.rs-api</artifactId>
        <groupId>javax.ws.rs</groupId>
    </exclusion>
</exclusions>

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

答案 3 :(得分:1)

我有同样的问题&amp;我不得不添加这个排除 -

            <exclusion>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxrs</artifactId>
            </exclusion>