我试图开始使用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>
答案 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>