[英]Getting root cause java.lang.AbstractMethodError while using Jersey ContainerRequestFilter
INFO: Server startup in 6705 ms
Nov 29, 2013 6:17:38 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [JerseyServlet] in context with path [/jersey_project] threw exception [Servlet execution threw an exception] with root cause
java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:649)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
It seems that you're using Jersey 1.x (JAX-RS 1.1 implementation) with JAX-RS 2.0 APIs.您似乎正在将 Jersey 1.x(JAX-RS 1.1 实现)与 JAX-RS 2.0 API 一起使用。 In your application either switch to Jersey 2 (recommended) or replace JAX-RS 2.0 API jar with JAX-RS 1.1 API jar (it's already part of the
jersey-common
so removing 2.0 API should be sufficient).在您的应用程序中,要么切换到 Jersey 2(推荐),要么用 JAX-RS 1.1 API jar 替换 JAX-RS 2.0 API jar(它已经是
jersey-common
一部分,因此删除 2.0 API 就足够了)。
you have a maven dependency issue, delete all your dependencies in particular the conteiner jersey dependency and add this ones:你有一个 maven 依赖问题,删除你所有的依赖,特别是 conteiner jersey 依赖并添加这些:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.5.1</version>
</dependency>
I needed a more specific answer to the problem so I added the following plugin to maven:我需要一个更具体的问题的答案,所以我向 maven 添加了以下插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<dependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
The above showed me all the dependency conflicts so I managed to resolved more than the aforementioned problem and keep my dependency tree tidy.以上向我展示了所有的依赖冲突,所以我设法解决了比上述问题更多的问题并保持我的依赖树整洁。
The plugin runs when calling:该插件在调用时运行:
mvn clean install
And shows you a warning as follows:并向您显示如下警告:
[WARNING]
Dependency convergence error for com.fasterxml.jackson.core:jackson-core:2.8.10 paths to dependency are:
+-com.omilia:partners:5.4.0-RC-3
+-org.glassfish.jersey.media:jersey-media-json-jackson:2.27
+-com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.8.10
+-com.fasterxml.jackson.core:jackson-core:2.8.10
and
+-com.omilia:partners:5.4.0-RC-3
+-com.fasterxml.jackson.core:jackson-databind:2.9.6
+-com.fasterxml.jackson.core:jackson-core:2.9.6
Subsequently, you can exclude the specific package, when referencing your dependency in your pom:随后,您可以在 pom 中引用您的依赖项时排除特定的包:
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
More Information can be found here:更多信息可以在这里找到:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.