1

我在 playframework 1.2 中创建了一个示例应用程序并尝试将其部署到 google-appengine,部署显示没有问题。但是当我点击我的应用程序时,它会显示 505 错误。

当我检查日志时,我发现它抛出了一个错误,而有趣的是,它显示了一个 servlet 异常,呵呵!play 完全脱离了 servlet/jsp 的世界。怎么会抛出servlet异常?

完整的堆栈跟踪是

无法实例化侦听器 play.server.ServletWrapper java.lang.ClassNotFoundException:在 java.lang.ClassLoader.loadClass(ClassLoader. java:266) 在 org.mortbay.jetty.handler.ContextHandler.loadClass(ContextHandler.java:1101) 在 org.mortbay.jetty.webapp.WebXmlConfiguration.initListener(WebXmlConfiguration.java:630) 在 org.mortbay.jetty.webapp .WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java:368) 在 org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289) 在 org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222) 在org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180) 在 org.mortbay。jetty.webapp.WebAppContext.startContext(WebAppContext.java:1247) 在 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:449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1。 run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing .TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing。TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 java.lang.Thread.run(Thread.java:679)

2012-06-06 14:32:23.044

异常 java.lang.ClassNotFoundException: play.server.ServletWrapper at com.google.appengine.runtime.Request.process-b8b4d374cb7c1344(Request.java) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at org.mortbay .util.Loader.loadClass(Loader.java:91) 在 org.mortbay.util.Loader.loadClass(Loader.java:71) 在 org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73) 在org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 在 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:449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695)在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing.TraceContext$TraceContextRunnable.run (TraceContext.java:453) 在 java.lang.Thread.run(Thread.java:679)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:449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing .TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) ) 在 java.lang.Thread.run(Thread.java:679)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:449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing .TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) ) 在 java.lang.Thread.run(Thread.java:679)doStart(WebAppContext.java:467) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) at com.google.tracing .TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 java.lang.Thread.run(Thread.java :679)doStart(WebAppContext.java:467) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) at com.google.tracing .TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 java.lang.Thread.run(Thread.java :679)50)在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext。 runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google .tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 java.lang.Thread.run(Thread.java:679)50)在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext。 runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google .tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 java.lang.Thread.run(Thread.java:679)TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com .google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 java.lang.Thread.run(Thread.java:679)TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com .google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 java.lang.Thread.run(Thread.java:679)

2012-06-06 14:32:23.045

javax.servlet.ServletContext 日志:不可用 javax.servlet.UnavailableException: play.server.ServletWrapper at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79) at org.mortbay.jetty.servlet.ServletHolder.doStart (ServletHolder.java:242) 在 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.apphosting。runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:202) 在 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:171) 在 com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest( JettyServletEngineAdapter.java:123) 在 com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:477) 在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 在 com.google .tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java: 333)在 com.google.tracing。TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java: 251) 在 java.lang.Thread.run(Thread.java:679)

2012-06-06 14:32:23.092

上下文 com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@15e00b7{/,/base/data/home/apps/s~play-gae2/1.359439975758049816} java.lang.NullPointerException 在 java.lang.Class.isAssignableFrom 启动失败(本机方法)在 org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) 在 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.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:202) 在 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java: 171) 在 com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123) 在 com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:477) 在 com.google.tracing .TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695)在 com.google.tracing.TraceContext$AbstractTraceContextCallback。runInInheritedContextNoUnref(TraceContext.java:333) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453) 在 com.google .apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 在 java.lang.Thread.run(Thread.java:679)

C 2012-06-06 14:32:23.093

来自 servlet javax.servlet.UnavailableException 的未捕获异常:初始化失败。在 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:211) 在 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:171) 在 com.google.apphosting.runtime .jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123) 在 com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:477) 在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java :449) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455) 在 com.google.tracing.TraceContext.runInContext(TraceContext.java:695) 在 com.google.tracing。

4

1 回答 1

0

尽管 Play 不使用 Servlet,但为了使 Play 在 J2EE 容器(包括 GAE)中工作,play 使用 Servlet 包装器将来自 J2EE 容器的请求路由到 Play 代码中。

从您得到的异常来看,这个 Play servlet 包装器似乎不可用。您是否使用 Play 中的 GAE 模块部署它?这应该会为您创建一个 WAR 文件并将其直接上传到 GAE。这应确保正确复制所需的所有内容。

于 2012-06-07T08:08:02.510 回答