bal*_*man 5 java google-app-engine spring maven jersey-2.0
我在GAE上将Jersey和Spring一起使用。
我得到以下异常:
Uncaught exception from servlet
java.lang.NoSuchFieldError: INCLUDE_ALL
at org.glassfish.jersey.server.ResourceConfig$State.<init> (ResourceConfig.java:110)
at org.glassfish.jersey.server.ResourceConfig.<init>(ResourceConfig.java:351)
at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig.<init>(ResourceConfig.java:1014)
at org.glassfish.jersey.server.ResourceConfig.forApplicationClass(ResourceConfig.java:325)
at org.glassfish.jersey.servlet.WebComponent.createResourceConfig(WebComponent.java:442)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:294)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:219)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:194)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:446)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444)
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:188)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:724)
Run Code Online (Sandbox Code Playgroud)
查看Jersey代码,我看到这是抛出异常的地方:
public State() {
super(RuntimeType.SERVER, ComponentBag.INCLUDE_ALL);
Run Code Online (Sandbox Code Playgroud)
查看“ ComponentBag”,我可以看到在运行时找不到的公共字段。
public static final Predicate<ContractProvider> INCLUDE_ALL = Predicates.alwaysTrue();
Run Code Online (Sandbox Code Playgroud)
在“状态”构造函数中,无法在运行时找到“ ComponentBag”的字段“ INCLUDE_ALL”。
它看起来像是类路径问题,但我找不到错误所在。
我正在使用Maven-这是我的POM的相关部分。
...
<properties>
<appengine.app.version>5</appengine.app.version>
<appengine.target.version>1.8.9</appengine.target.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jersey.version>2.7</jersey.version>
<spring.version>3.2.3.RELEASE</spring.version>
</properties>
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
...
Run Code Online (Sandbox Code Playgroud)
小智 5
如果有人偶然发现了这个问题(或者它仍然相关),我发现将 -verbose:class 添加到命令行 VM 选项可以帮助您找出此异常的确切来源。
ResourceConfig 来自 jersey-server-2.22.1.jar。我已经通过从WEB-INF/lib 中删除我所有的 jars并从 maven 添加它们来解决这个问题。
| 归档时间: |
|
| 查看次数: |
6047 次 |
| 最近记录: |