title: App Engine, JSP "No forced path servlet for /WEB-INF/home.jsp"
body: <p>I have a GAE/J program (with JSP) which runs perfectly on dev server but when I deploy it to App Engine it returns with this: </p>
  
  <blockquote>
    <p>Error: Server Error</p>
    
    <p>The server encountered an error and could not complete your request.
    If the problem persists, please report your problem and mention this
    error message and the query that caused it.</p>
  </blockquote>
  
  <p>I use Ecplise to deploy my program.
  My environment and settings:</p>
  
  <p>Win 7 x64</p>
  
  <p>Eclipse
  Version: Juno Service Release 2
  Build id: 20130225-0426</p>
  
  <p>JRE System Library [jdk1.7.0_21]</p>
  
  <p>App Engine SDK 1.7.7</p>
  
  <p>In the App Engine admin console log shows one "Warning":</p>
  
  <pre><code>Failed startup of context com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@1c24a0b{/,/base/data/home/apps/s~4562545625ab/1.366972147789894265}
  java.lang.IllegalStateException: No forced path servlet for /WEB-INF/home.jsp
      at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:679)
      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:438)
      at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480)
      at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487)
      at com.google.tracing.TraceContext.runInContext(TraceContext.java:774)
      at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751)
      at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342)
      at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334)
      at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484)
      at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
      at java.lang.Thread.run(Thread.java:722)
  </code></pre>
  
  <p>and one "Critical":</p>
  
  <pre><code>Uncaught exception from servlet
  javax.servlet.UnavailableException: Initialization failed.
      at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:228)
      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:438)
      at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480)
      at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487)
      at com.google.tracing.TraceContext.runInContext(TraceContext.java:774)
      at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751)
      at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342)
      at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334)
      at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484)
      at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
      at java.lang.Thread.run(Thread.java:722)
  </code></pre>
  
  <p>The web.xml is the following:</p>
  
  <pre><code>    &lt;static-files&gt;
          &lt;include path="/stylesheets/main.css" /&gt;
      &lt;/static-files&gt;
  
      &lt;servlet&gt;
          &lt;servlet-name&gt;home-jsp&lt;/servlet-name&gt;
          &lt;jsp-file&gt;/WEB-INF/home.jsp&lt;/jsp-file&gt;
      &lt;/servlet&gt;
      &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;home-jsp&lt;/servlet-name&gt;
          &lt;url-pattern&gt;/WEB-INF/home.jsp&lt;/url-pattern&gt;
      &lt;/servlet-mapping&gt;  
  
      &lt;servlet&gt;
          &lt;servlet-name&gt;Home&lt;/servlet-name&gt;
          &lt;servlet-class&gt;com.test.HomeServlet&lt;/servlet-class&gt;
      &lt;/servlet&gt;
      &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;Home&lt;/servlet-name&gt;
          &lt;url-pattern&gt;/index/&lt;/url-pattern&gt;
      &lt;/servlet-mapping&gt;
  </code></pre>
  
  <p>Do you have any idea what can be the problem?</p>