java.lang.NoSuchMethodError: javax.ws.rs.core.Response.readEntity
java.lang.NoSuchMethodError: javax.ws.rs.core.Response.readEntity
我在做什么
以前我使用的是 Jercey 客户端,但 Jercey 没有名为 Retry 的机制,我必须使用 RestEasy 客户端,所以我在 pom.xml 文件中添加了以下依赖项
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.8.Final</version>
</dependency>
<!-- JAXB support -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-atom-provider</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-links</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.0.8.Final</version>
</dependency>
Java我写的代码
ResteasyClient client;
client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(usersRequest.getUrl());
Response response = null;
if(null != usersRequest.getXmlObject()){
response = target.request().accept(MediaType.APPLICATION_XML_TYPE).post(Entity.entity(usersRequest.getXmlObject(),MediaType.TEXT_XML));
}else{
response = target.request().accept(MediaType.APPLICATION_XML_TYPE).get();
}
output = response.readEntity(String.class);
但我以以下错误结束
java.lang.NoSuchMethodError:
javax.ws.rs.core.Response.readEntity(Ljava/lang/Class;)Ljava/lang/Object;
at
com.alu.ipprd.mdf.soa.portal.integration.restapi.RestAPIUsersFacade.getAuthorizationUserRole(RestAPIUsersFacade.java:212)
[mdf-portal-integration-0.0.1-SNAPSHOT.jar:] at
com.alu.ipprd.bsm.soa.portal.business.aaa.UsersWorkOrder.processBusinessLogic(UsersWorkOrder.java:57)
[mdf-portal-business-0.0.1-SNAPSHOT.jar:] at
com.alu.ipprd.bsm.soa.portal.business.aaa.UsersWorkOrder.processBusinessLogic(UsersWorkOrder.java:1)
[mdf-portal-business-0.0.1-SNAPSHOT.jar:] at
com.alu.ipprd.bsm.soa.portal.common.business.BaseWorkOrder.submitWorkOrder(BaseWorkOrder.java:75)
[mdf-portal-common-0.0.1-SNAPSHOT.jar:] at
com.alu.ipprd.bsm.soa.portal.bean.LoginBean.doLogin(LoginBean.java:907)
[classes:] at
com.alu.ipprd.bsm.soa.portal.bean.LoginBean.verifyLogged(LoginBean.java:1150)
[classes:] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) [rt.jar:1.7.0_79] at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[rt.jar:1.7.0_79] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[rt.jar:1.7.0_79] at java.lang.reflect.Method.invoke(Unknown Source)
[rt.jar:1.7.0_79] at
org.apache.el.parser.AstValue.invoke(AstValue.java:262)
[jbossweb-7.0.10.Final.jar:] at
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
[jbossweb-7.0.10.Final.jar:] at
com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
com.sun.faces.facelets.tag.jsf.core.DeclarativeSystemEventListener.processEvent(EventHandler.java:128)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2464)
[jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at
javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
[jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at
com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2168)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:2116)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:288)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:246)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:108)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at
javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
[jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
[jbossweb-7.0.10.Final.jar:] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
[jbossweb-7.0.10.Final.jar:] at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
[jbossweb-7.0.10.Final.jar:] at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
[jbossweb-7.0.10.Final.jar:] at
org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154)
[jboss-as-web-7.1.0.Final.jar:7.1.0.Final] at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
[jbossweb-7.0.10.Final.jar:] at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
[jbossweb-7.0.10.Final.jar:] at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
[jbossweb-7.0.10.Final.jar:] at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
[jbossweb-7.0.10.Final.jar:] at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
[jbossweb-7.0.10.Final.jar:] at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
[jbossweb-7.0.10.Final.jar:] at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
[jbossweb-7.0.10.Final.jar:] at java.lang.Thread.run(Unknown Source)
[rt.jar:1.7.0_79]
我还检查了包含此 class 的 jar jaxrs-api-3.0.8.Final.jar
和方法,即便如此,它也不会解析。任何人都可以告诉我我做错了什么吗?
编辑 1:-
我通过在 jboss-deployment-structure.xml
中添加以下条目来限制 Jboss 使用 resteasy jar
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.apache.log4j" />
<module name="org.jboss.resteasy.resteasy-atom-provider" />
<module name="org.jboss.resteasy.resteasy-cdi" />
<module name="org.jboss.resteasy.resteasy-jaxb-provider" />
<module name="org.jboss.resteasy.resteasy-jaxrs" />
<module name="org.jboss.resteasy.resteasy-jettison-provider" />
<module name="org.jboss.resteasy.resteasy-jsapi" />
<module name="org.jboss.resteasy.resteasy-multipart-provider" />
<module name="org.jboss.resteasy.resteasy-yaml-provider" />
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
<module name="org.javassist" />
</exclusions>
<dependencies>
<module name="javaee.api">
<imports>
<exclude path="org/apache/xml/security/**" />
</imports>
</module>
<module name="org.jboss.resteasy.resteasy-jettison-provider" />
<module name="org.codehaus.jettison" />
</dependencies>
</deployment>
</jboss-deployment-structure>
此问题是由于您的应用与 Jboss 之间的 Resteasy Client 实现版本不同而引发的。
请参阅RESTEasy Client + NoSuchMethodError
这个 RESTEasy Client + NoSuchMethodError 将如何帮助解决我正在使用 Jboss7.1.0.final 服务器的 issue.As 当我解压缩 resteasy-jaxrs-3.0.8.Final-all
它有resteasy-jboss-modules-3.0.8.Final
和resteasy-jboss-modules-3.0.8.Final
拿出三个文件夹com
,javax
,org
这3个文件夹我们要复制粘贴到jboss-as-7.1.0.Final\jboss-as-7.1.0.Final\modules
我只将 resteasy-jboss-modules-3.0.8.Final\org\jboss\resteasy
复制到 Jboss 服务器,所以失败了。
我在做什么
以前我使用的是 Jercey 客户端,但 Jercey 没有名为 Retry 的机制,我必须使用 RestEasy 客户端,所以我在 pom.xml 文件中添加了以下依赖项
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.8.Final</version>
</dependency>
<!-- JAXB support -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-atom-provider</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-links</artifactId>
<version>3.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.0.8.Final</version>
</dependency>
Java我写的代码
ResteasyClient client;
client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(usersRequest.getUrl());
Response response = null;
if(null != usersRequest.getXmlObject()){
response = target.request().accept(MediaType.APPLICATION_XML_TYPE).post(Entity.entity(usersRequest.getXmlObject(),MediaType.TEXT_XML));
}else{
response = target.request().accept(MediaType.APPLICATION_XML_TYPE).get();
}
output = response.readEntity(String.class);
但我以以下错误结束
java.lang.NoSuchMethodError: javax.ws.rs.core.Response.readEntity(Ljava/lang/Class;)Ljava/lang/Object; at com.alu.ipprd.mdf.soa.portal.integration.restapi.RestAPIUsersFacade.getAuthorizationUserRole(RestAPIUsersFacade.java:212) [mdf-portal-integration-0.0.1-SNAPSHOT.jar:] at com.alu.ipprd.bsm.soa.portal.business.aaa.UsersWorkOrder.processBusinessLogic(UsersWorkOrder.java:57) [mdf-portal-business-0.0.1-SNAPSHOT.jar:] at com.alu.ipprd.bsm.soa.portal.business.aaa.UsersWorkOrder.processBusinessLogic(UsersWorkOrder.java:1) [mdf-portal-business-0.0.1-SNAPSHOT.jar:] at com.alu.ipprd.bsm.soa.portal.common.business.BaseWorkOrder.submitWorkOrder(BaseWorkOrder.java:75) [mdf-portal-common-0.0.1-SNAPSHOT.jar:] at com.alu.ipprd.bsm.soa.portal.bean.LoginBean.doLogin(LoginBean.java:907) [classes:] at com.alu.ipprd.bsm.soa.portal.bean.LoginBean.verifyLogged(LoginBean.java:1150) [classes:] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_79] at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_79] at org.apache.el.parser.AstValue.invoke(AstValue.java:262) [jbossweb-7.0.10.Final.jar:] at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) [jbossweb-7.0.10.Final.jar:] at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.facelets.tag.jsf.core.DeclarativeSystemEventListener.processEvent(EventHandler.java:128) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2464) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2168) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:2116) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:288) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:246) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:108) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:] at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_79]
我还检查了包含此 class 的 jar jaxrs-api-3.0.8.Final.jar
和方法,即便如此,它也不会解析。任何人都可以告诉我我做错了什么吗?
编辑 1:-
我通过在 jboss-deployment-structure.xml
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.apache.log4j" />
<module name="org.jboss.resteasy.resteasy-atom-provider" />
<module name="org.jboss.resteasy.resteasy-cdi" />
<module name="org.jboss.resteasy.resteasy-jaxb-provider" />
<module name="org.jboss.resteasy.resteasy-jaxrs" />
<module name="org.jboss.resteasy.resteasy-jettison-provider" />
<module name="org.jboss.resteasy.resteasy-jsapi" />
<module name="org.jboss.resteasy.resteasy-multipart-provider" />
<module name="org.jboss.resteasy.resteasy-yaml-provider" />
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
<module name="org.javassist" />
</exclusions>
<dependencies>
<module name="javaee.api">
<imports>
<exclude path="org/apache/xml/security/**" />
</imports>
</module>
<module name="org.jboss.resteasy.resteasy-jettison-provider" />
<module name="org.codehaus.jettison" />
</dependencies>
</deployment>
</jboss-deployment-structure>
此问题是由于您的应用与 Jboss 之间的 Resteasy Client 实现版本不同而引发的。
请参阅RESTEasy Client + NoSuchMethodError
这个 RESTEasy Client + NoSuchMethodError 将如何帮助解决我正在使用 Jboss7.1.0.final 服务器的 issue.As 当我解压缩 resteasy-jaxrs-3.0.8.Final-all
它有resteasy-jboss-modules-3.0.8.Final
和resteasy-jboss-modules-3.0.8.Final
拿出三个文件夹com
,javax
,org
这3个文件夹我们要复制粘贴到jboss-as-7.1.0.Final\jboss-as-7.1.0.Final\modules
我只将 resteasy-jboss-modules-3.0.8.Final\org\jboss\resteasy
复制到 Jboss 服务器,所以失败了。