我正在开发一个项目,该项目使用各种客户端应用程序作为maven依赖项来与不同的REST API进行通信。
但是当包含使用Jersey 2.x实现的客户端以及使用RESTEasy的任何其他客户端时,会出现问题。
一旦我添加使用RESTEasy的依赖项,我就会收到这样的错误:
引起:javax.ws.rs.ProcessingException:无法找到 内容类型application / json的MessageBodyReader和类型类 de.fhg.ipa.vfk.docker.dockerregistry.restclient.entity.SearchResult 在 org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:39) 在 org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:73) 在 org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:50) 在 org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:245) 在 org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:179) 在 org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:211) 在 org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:104) ......还有4个
或者这个:
引起:javax.ws.rs.ProcessingException:找不到编写器 content-type application / tar type:java.io.FileInputStream at org.jboss.resteasy.core.interception.ClientWriterInterceptorContext.throwWriterNotFoundException(ClientWriterInterceptorContext.java:40) 在 org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.getWriter(AbstractWriterInterceptorContext.java:138) 在 org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:117) 在 org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.writeRequestBody(ClientInvocation.java:341) 在 org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.writeRequestBodyToOutputStream(ApacheHttpClient4Engine.java:558) 在 org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.buildEntity(ApacheHttpClient4Engine.java:524) 在 org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.loadHttpMethod(ApacheHttpClient4Engine.java:423) 在 org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:281) ......还有7个
是否可以使用这两个库或以某种方式配置maven,以便应用程序不会尝试使用RESTEasy依赖项而不是Jersey 2.x,反之亦然?
由于
丹尼尔
答案 0 :(得分:7)
你可以尝试使用Maven配置文件来激活Jersey或RESTEasy,但是你不能同时在同一个平面类路径中有两个JAX-RS实现。
如果必须在一个应用程序中同时使用这两个实现,则需要由OSGi或JBoss Modules等模块系统提供的类加载器隔离。
最好的方法可能是重构代码以仅使用JAX-RS 2.0客户端API并解决 泽西或 RESTEasy的角落案例需要特定于实现的API。