-1

幾天前,我的應用程序引擎android應用程序在正常部署後停止工作。我的本地代碼沒有變化(與以前的版本做了區別),唯一改變的是Java更新。GAE應用程序突然停止工作 - 上下文啓動失敗com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext

部署操作成功完成,但是當應用程序啓動時,我得到以下錯誤在開發者控制檯在App Engine紀錄:

EXCEPTION 
java.lang.ClassNotFoundException: Serve 
at com.google.appengine.runtime.Request.process-bdec5268b83f2316(Request.java) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:360) 
at org.mortbay.util.Loader.loadClass(Loader.java:91) 
at org.mortbay.util.Loader.loadClass(Loader.java:71) 
at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73) 
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 
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.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:438) 
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:445) 
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220) 
at  com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:309) 
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:301) 
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:442) 

javax.servlet.ServletContext log: unavailable 
javax.servlet.UnavailableException: Serve 
at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79) 
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 
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:199) 
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:174) 
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:438) 
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:445) 
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220) 
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:309) 
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:301) 
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:442) 
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
at java.lang.Thread.run(Thread.java:724) 

的根本原因似乎是這樣的:

Failed startup of context [email protected]e0d280{/,/base/data/home/apps/s~diesel-media-647/1.378309428699474015} 
org.mortbay.util.MultiException[java.lang.NullPointerException, java.lang.NullPointerException] 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:656) 
    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:199) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:174) 
    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:438) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:445) 
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:309) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:301) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:442) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:724) 
java.lang.NullPointerException 
    at java.lang.Class.isAssignableFrom(Native Method) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) 
    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:199) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:174) 
    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:438) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:445) 
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:309) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:301) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:442) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:724) 
java.lang.NullPointerException 
    at java.lang.Class.isAssignableFrom(Native Method) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) 
    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:199) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:174) 
    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:438) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:445) 
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:309) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:301) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:442) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:724) 

下面是我嘗試基於s imilar帖子:

  1. 我已經更新了我的GAE SDK到最新版本(1.9.9),按照這個帖子 Weird 500 Error on GAE

  2. 我用下,appcfg做回滾和清潔我的部署。乾淨的操作已成功完成,但是當我重新部署時出現了相同的錯誤。

  3. 我已經恢復到Java 1.6(目前在1.7) - 沒有工作。

  4. 我已經雙重檢查了我的web.xml文件,以確保servlet路徑是正確的。我試圖完全我的包出線類名 - 沒有工作

  5. 我曾嘗試加入時加載的啓動標籤在我的web.xml文件按照這個帖子 EXCEPTION java.lang.ClassNotFoundException: servlet - But the Servlet is present; And web.xml is absolutely correct

我一直在爲此奮鬥了幾天,而且我的智慧已經結束了。任何幫助表示讚賞。 僅供參考,我在使用GAE SDK 1.9.9時遇到此問題時從1.9.3升級。 我使用Java 1.7(試用1.6)。

+0

不完全確定爲什麼我被downvoted - 一個理由會很好哈哈。 – Fayez 2014-08-30 00:40:25

回答

0

因爲得到java.lang.ClassNotFoundException:Serve,所以必須在包中包含「Serve」類(構建路徑)。

+0

這不是問題 - 類路徑的詳細信息都是正確的,並且與以前版本的應用程序沒有任何變化。儘管謝謝你的回答! – Fayez 2014-08-29 14:01:16

+0

我認爲這可能與升級到Java8有關 – Fayez 2014-08-29 16:56:13

0

終於解決了這個問題,但不幸的是,我不完全知道爲什麼(總是吸) 這是一系列的步驟(而不是一個)。

我非常確定該應用程序停留在部分部署狀態,所以我使用appcfg應用程序進行回滾。我已經完成了這一步,但沒有奏效。

接下來的事情是手動刪除生成的類文件夾 - 該servlet .class文件已損壞(我已經完成了這一步,但它沒有工作)。

重新部署,它自動工作。

這是一個非常惱人的錯誤,因爲我沒有改變我的任何代碼,編譯器也沒有抱怨.classes文件沒有被刪除/重新創建。

希望這可以幫助別人。