访问 JAX RS CXF Web 服务时没有这样的方法错误
No such method Error when accessing JAX RS CXF web service
当我尝试访问我的 JAX RS CXF Web 服务时,我没有收到此类方法错误。
这些是我在构建路径中添加的罐子:
cxf-core-3.1.2.jar
cxf-rt-frontend-jaxrs-3.1.2.jar
cxf-rt-rs-client-3.1.2.jar
cxf-rt-rs-extension-providers-3.1.2.jar
cxf-rt-rs-extension-search-3.1.2.jar
cxf-rt-transports-http-3.1.2.jar
httpclient-4.4.1.jar
httpcore-4.4.1.jar
httpcore-nio-4.4.1.jar
javax.ws.rs-api-2.0.1.jar
jcl-over-slf4j-1.7.12.jar
jettison-1.3.7.jar
spring-aop-4.1.6.RELEASE.jar
spring-beans-4.1.6.RELEASE.jar
spring-context-4.1.6.RELEASE.jar
spring-core-4.1.6.RELEASE.jar
spring-expression-4.1.6.RELEASE.jar
spring-web-4.1.6.RELEASE.jar
stax2-api-3.1.4.jar
xml-resolver-1.2.jar
xmlbeans-2.6.0.jar
xmlschema-core-2.2.1.jar
xmlsec-2.0.5.jar
J2EE版本为2.3,应用服务器为weblogic 12
我知道这是一些 jar 问题。但我无法解决它。这是抛出的错误:
java.lang.NoSuchMethodError: javax.ws.rs.NotFoundException.validate(Ljavax/ws/rs/core/Response;Ljavax/ws/rs/core/Response$Status;)Ljavax/ws/rs/core/Response;
at javax.ws.rs.NotFoundException.(NotFoundException.java:126)
at org.apache.cxf.jaxrs.utils.SpecExceptions.toNotFoundException(SpecExceptions.java:89)
at org.apache.cxf.jaxrs.utils.ExceptionUtils.toNotFoundException(ExceptionUtils.java:122)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:169)
class 和方法可能存在并且与任何 weblogic jar 冲突
在 WEB-INF 中的 weblogic.xml 中,添加 javax.ws.rs.* 包以指示 weblogic 更喜欢来自您的 WAR class 路径的包,如下所示,
<package-name>javax.ws.rs.*</package-name>
样本weblogic.xml:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsdhttp://xmlns.oracle.com/weblogic/weblogic-web-apphttp://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<prefer-application-packages>
<package-name>com.fasterxml.jackson.*</package-name>
<package-name>org.eclipse.persistence.*</package-name>
<package-name>javax.ws.rs.*</package-name>
</prefer-application-packages>
</container-descriptor>
</weblogic-web-app>
当我尝试访问我的 JAX RS CXF Web 服务时,我没有收到此类方法错误。 这些是我在构建路径中添加的罐子:
cxf-core-3.1.2.jar
cxf-rt-frontend-jaxrs-3.1.2.jar
cxf-rt-rs-client-3.1.2.jar
cxf-rt-rs-extension-providers-3.1.2.jar
cxf-rt-rs-extension-search-3.1.2.jar
cxf-rt-transports-http-3.1.2.jar
httpclient-4.4.1.jar
httpcore-4.4.1.jar
httpcore-nio-4.4.1.jar
javax.ws.rs-api-2.0.1.jar
jcl-over-slf4j-1.7.12.jar
jettison-1.3.7.jar
spring-aop-4.1.6.RELEASE.jar
spring-beans-4.1.6.RELEASE.jar
spring-context-4.1.6.RELEASE.jar
spring-core-4.1.6.RELEASE.jar
spring-expression-4.1.6.RELEASE.jar
spring-web-4.1.6.RELEASE.jar
stax2-api-3.1.4.jar
xml-resolver-1.2.jar
xmlbeans-2.6.0.jar
xmlschema-core-2.2.1.jar
xmlsec-2.0.5.jar
J2EE版本为2.3,应用服务器为weblogic 12
我知道这是一些 jar 问题。但我无法解决它。这是抛出的错误:
java.lang.NoSuchMethodError: javax.ws.rs.NotFoundException.validate(Ljavax/ws/rs/core/Response;Ljavax/ws/rs/core/Response$Status;)Ljavax/ws/rs/core/Response;
at javax.ws.rs.NotFoundException.(NotFoundException.java:126)
at org.apache.cxf.jaxrs.utils.SpecExceptions.toNotFoundException(SpecExceptions.java:89)
at org.apache.cxf.jaxrs.utils.ExceptionUtils.toNotFoundException(ExceptionUtils.java:122)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:169)
class 和方法可能存在并且与任何 weblogic jar 冲突
在 WEB-INF 中的 weblogic.xml 中,添加 javax.ws.rs.* 包以指示 weblogic 更喜欢来自您的 WAR class 路径的包,如下所示,
<package-name>javax.ws.rs.*</package-name>
样本weblogic.xml:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsdhttp://xmlns.oracle.com/weblogic/weblogic-web-apphttp://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<prefer-application-packages>
<package-name>com.fasterxml.jackson.*</package-name>
<package-name>org.eclipse.persistence.*</package-name>
<package-name>javax.ws.rs.*</package-name>
</prefer-application-packages>
</container-descriptor>
</weblogic-web-app>