2013-10-15 96 views
1

我想使用CXF创建一个休息客户端。下面的代码抛出异常CXF rest客户端不能使用JAXRSServerFactoryBean

JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); 
     sf.setResourceClasses(Blogger.class); 
     sf.getInInterceptors().add(new LoggingInInterceptor()); 
     sf.getOutInterceptors().add(new LoggingOutInterceptor()); 
     sf.setAddress("http://myservice"); 
     Map<Object, Object> mappings = new HashMap<Object, Object>(); 
     mappings.put("xml", "application/xml"); 
     mappings.put("json", "application/json"); 
     sf.setExtensionMappings(mappings); 
     sf.create(); 

我得到的例外是

Exception in thread "main" java.lang.NoClassDefFoundError: javax/ws/rs/WebApplicationException 
    at com.test.LoggingTest.main(LoggingTest.java:26) 
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.WebApplicationException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 1 more 

回答

4

javax.ws.rs API的.jar在类路径失踪。更正您的依赖关系管理工具的设置或手动将其添加到类路径。从Apache CXF documentation

  • 2.7要求JSR-339的API(JAX-RS 2.0):javax.ws.rs/javax.ws.rs-api/m10
  • 2.6及以上使用JSR-311的API(JAX-RS 1.0)
+0

感谢它的工作... – chatter

+0

高兴你得到它的工作,这么好心( – Pyranja

+0

我有org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.create()抛出异常;嵌套异常是java.lang.NoClassDefFoundError:javax/ws/rs/client/ClientException使用javax.ws.rs/javax.ws.rs-api的2.0.1版本(而不是2.0-m10的CXF 2.7.16版本)时强制使用2.0-m10修正了它。 – anre

3

有你包括jsr311-api-1.1.jar到你的类路径?如果您使用的Maven,这可能帮助你(JAS-RS 1.1)

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

或JAX-RS 2.0版本

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

感谢它现在的工作 – chatter