我想在我的网络应用程序中使用REST服务(带有6.0.0.Final的.war),但在添加jersey-client库时遇到问题:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.9.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
使用此配置,我在JBoss启动期间收到以下错误:
08:11:28,297 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].
[localhost].[/test]] Exception starting filter Resteasy:
java.lang.ClassCastException: com.aht.erp.web.rest.JaxRsActivator
cannot be cast to javax.ws.rs.core.Application
我的webapp有一个激活的JAX-RS,带有以下注释:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/rest")
public class JaxRsActivator extends Application {}
如果我不添加依赖性,我的战争就开始了,但当我调用jersey-client时,我当然得到NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig
。排除jersey-core
后,我收到此错误:NoClassDefFoundError: com/sun/jersey/core/util/FeaturesAndProperties
。
答案 0 :(得分:4)
我认为问题在于您尝试在Web应用中混合使用两种不同的jax-rs实现。对于您的RESTful资源,您使用的是RESTEasy,而在客户端则需要使用Jersey - 所有这些都由同一个jar使用。然而,Jersey客户端依赖于Jersey核心,它与RESTEasy冲突。因此,您要么必须依赖RESTEasy客户端API,要么也为服务器端切换到Jersey。