部署Google AppEngine应用时未找到Servlet类 [英] Servlet class not found when deploying Google AppEngine app

查看:139
本文介绍了部署Google AppEngine应用时未找到Servlet类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用 ./ appengine-java-sdk / bin / appcfg.sh更新< war> 部署我的Google AppEngine应用程序时,出现服务器错误。管理控制台为我的所有servlet列出了以下例外:

  EXCEPTION 
java.lang.ClassNotFoundException:appengine。 HelloAppEngineServlet
at com.google.appengine.runtime.Request.process-4920a4ae96758975(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)
com.google.tracing .TraceContext $ TraceContextRunnable.runInContext(TraceContext.java:437)
,位于com.google.tracing.TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java:444)
,位于com.google.tracing.CurrentContext。 runInContext(CurrentContext.java:188)维持在com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContext com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)

(TraceContext。 java:300)
at com.google.tracing.TraceContext $ TraceContextRunnable.run(TraceContext.java:441)
at java.lang.Thread.run(Thread.java:724)


javax.servlet.ServletContext日志:不可用
javax.servlet.UnavailableException:appengine.HelloAppEngineServlet
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)
在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 b $ b)
在com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:219)在com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:194)

在com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134)
在com.google.appho sting.runtime.JavaRuntime $ RequestRunnable.run(JavaRuntime.java:446)
,位于com.google.tracing.TraceContext $ TraceContextRunnable.runInContext(TraceContext.java:437)
,位于com.google.tracing。 TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java:444)
在com.google.tracing.CurrentContext.runInContext(CurrentContext.java:188)
在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)

使用 mvn appengine:devserver - 我该如何解决这个问题?



编辑:我检查了以下内容:


  • 所有必需的jar文件位于maven版本之后的WEB-INF / lib /

  • 中。
  • 包含应用程序的jar包含在appengine / HelloAppEngineServlet.class中的类,它无法找到日志输出所表示的类...

    解决方案

    错误在于我将appcfg指向了src /中的webapp文件夹(因为它实际上表示只接受webapp文件夹,没有战争)而不是目标/ myapp /



    现在我感到很蠢。


    When I deploy my Google AppEngine app using ./appengine-java-sdk/bin/appcfg.sh update <war> I get a server error. The admin console lists the following exceptions for all of my servlets:

    EXCEPTION 
    java.lang.ClassNotFoundException: appengine.HelloAppEngineServlet
    at com.google.appengine.runtime.Request.process-4920a4ae96758975(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: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 java.lang.Thread.run(Thread.java:724)
    
    
    javax.servlet.ServletContext log: unavailable
    javax.servlet.UnavailableException: appengine.HelloAppEngineServlet
    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: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)
    

    It works fine when deployed locally using mvn appengine:devserver - how can I fix this?

    EDIT: I checked the following:

    • all required jars are in the WEB-INF/lib/ after the maven build

    • the jar containing the app contains the class at appengine/HelloAppEngineServlet.class, which the log output says can't be found...

    解决方案

    The error was that I pointed appcfg to the webapp folder in src/ (since it actually says "only accepts webapp folder, no war) instead of to target/myapp/

    I feel stupid now.

    这篇关于部署Google AppEngine应用时未找到Servlet类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆