0

我指的是教程,用于创建 REST Web 服务并在 GAE 中进行部署。本教程运行良好,我可以毫无问题地在本地运行。即使我能够成功部署在 GAE 中。但是当我尝试访问 url 时,出现以下错误

错误:服务器错误 服务器遇到错误,无法完成您的请求。

如果问题仍然存在,请报告您的问题并提及此错误消息和导致它的查询。

并且 GAE 日志包含此消息

servlet java.lang.IncompatibleClassChangeError 未捕获的异常:在 java.lang.ClassLoader.defineClass1(Native Method) 在 java.lang.ClassLoader 的 com.google.appengine.runtime.Request.process-78db28d34b15c040(Request.java) 实现类。 defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) at 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.(PackagesResourceConfig.java:78) 在 com.sun.jersey.api.core.PackagesResourceConfig.(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 org.mortbay.jetty.servlet.ServletHolder 的 javax.servlet.GenericServlet.init(GenericServlet.java:212) 的 .container.servlet.ServletContainer.init(ServletContainer.java:557)。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:452) 在 com.google.tracing.TraceContext$TraceContextRunnable$1。在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:336) 在 com.google.tracing 的 com.google.tracing.TraceContext.runInContext(TraceContext.java:698) 运行(TraceContext.java:458) .TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:328) at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:456) at java.lang.Thread.run(Thread.java:679)TraceContext$TraceContextRunnable.run(TraceContext.java:456) 在 java.lang.Thread.run(Thread.java:679)TraceContext$TraceContextRunnable.run(TraceContext.java:456) 在 java.lang.Thread.run(Thread.java:679)

请任何人让我做错了什么。

4

1 回答 1

3

正如上面已经提到的,这是由于 asm.3.1.jar 和 asm-4.0.jar 之间的不兼容造成的。要解决此问题,请确保删除对 4.0 的引用并使用 Datanucelus API 1.0,因为 2.0 需要 4.0 的 asm。

我在这里写了关于这个问题的更深入的文章:

GAE 1.7.2 和 Jersey 的问题

于 2012-09-24T14:08:28.823 回答