0

使用 Eclipse Juno Service Release 1,我创建了一个 Google App Engine 项目,然后手动将 JAX-RS 和 JAXB jar 文件复制到 war/WEB-INF/lib 中(因为试图在“Project Facets”中添加 JAX-RS属性导致错误 - 即需要安装动态 Web 模块,由于 JAR 已包含在 GAE 项目中,我认为这不是必需的?

当我在本地运行时,项目启动正常,我可以导航到我的虚拟休息服务,一切正常。

当我查看部署在 GAE 上的版本时,它会在日志文件中产生以下堆栈跟踪。

任何有关解决此问题的步骤的帮助将不胜感激。

非常感谢!抢。

2012-11-21 10:35:56.687 /hillingargaeserver 500 2764ms 0kb Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) 版本/6.0.2 Safari/536.26.17 87.194。 162.20 - - [21/Nov/2012:10:35:56 -0800] "GET /hillingargaeserver HTTP/1.1" 500 0 "http://hillingartimber.appspot.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17" "hillingartimber.appspot.com" ms=2765 cpu_ms=888 loading_request=1 instance=00c61b117cfb3272dbda34e1e6d68729723f98c314 C 2 10:35:56.685 servlet java.lang.IncompatibleClassChangeError 未捕获的异常:在 java.lang.ClassLoader 的 com.google.appengine.runtime.Request.process-ca8643ac95d7d414(Request.java) 实现类。defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)在 sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:616) 在 java.lang.ClassLoader .loadClass(ClassLoader.java:266) 在 com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79) 在 com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104 ) 在 com.sun.jersey.api.core.PackagesResourceConfig 的 com.sun.jersey.api.core.PackagesResourceConfig.(PackagesResourceConfig.java:78)。(PackagesResourceConfig.java:89) 在 com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:700) 在 com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java :678) 在 com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203) 在 com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) 在com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) at javax.servlet.GenericServlet.init(GenericServlet.java:212) at org.mortbay.jetty.servlet.ServletHolder.initServlet( ServletHolder.java:440) 在 org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 在 org.mortbay.jetty。servlet.ServletHandler.initialize(ServletHandler.java:685) 在 org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 在 org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)在 org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 在 org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle .java:50) 在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:454) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:461) 在 com.google.tracing .TraceContext.runInContext(TraceContext.java:703) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:338) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:330) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:458) 在 java.lang.Thread.run(Thread .java:679)

4

1 回答 1

0

经过大量的实验,我发现我需要添加所有的 JAX-RS Jar 文件(除了在 contrib 文件夹中)和 JAXB Jar 文件(JavaDoc 相关的除外)。

我还将“Servlet”罐子移到所有其他罐子之前。

一个很好的提示,如果您将战争文件复制到 /war/WEB-INF/lib 文件夹中,然后您可以右键单击它们以将它们添加到您的构建路径!- 保存在项目和 WEB-INF 文件夹中的副本。

抢。

于 2012-12-01T20:15:39.107 回答