1

これは、stackoverflow に関する私の最初の投稿です。Google App Engine の使い方を学びます。プログラムはローカル マシンでは正常に動作しますが、オンラインにアップロードすると実行に失敗します。私の予感はweb.xmlの問題です

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
 <servlet>
     <servlet-name>home-jsp</servlet-name>
     <jsp-file>/home.jsp</jsp-file>
 </servlet>
 <servlet-mapping>
     <servlet-name>home-jsp</servlet-name>
     <url-pattern>/home.jsp</url-pattern>
 </servlet-mapping>

 <servlet>
    <servlet-name>watch</servlet-name>
    <servlet-class>watch.WatchServlet</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>watch</servlet-name>
    <url-pattern>/</url-pattern>
 </servlet-mapping>

 <servlet>
     <servlet-name> Prefs</servlet-name>
     <servlet-class>watch.PrefsServlet</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>Prefs</servlet-name>
     <url-pattern>/prefs</url-pattern>
 </servlet-mapping>

 <security-constraint>
     <web-resource-collection>
         <web-resource-name>prefs</web-resource-name>
         <url-pattern>/prefs</url-pattern>
     </web-resource-collection>
     <auth-constraint>
         <role-name>*</role-name>
     </auth-constraint>
 </security-constraint>
</web-app>

私が見るログエントリを見る

    2013-10-27 13:46:54.348
Failed startup of context com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@7daf3e{/,/base/data/home/apps/s~fridoswatch/1.371221215746279551}
java.lang.IllegalStateException: No forced path servlet for /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:446)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:435)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:442)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:186)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:306)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:298)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:439)
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
    at java.lang.Thread.run(Thread.java:724)

そして重大なエラーログは言う

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:446)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:435)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:442)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:186)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:306)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:298)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:439)
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
    at java.lang.Thread.run(Thread.java:724)

2日間これに頭を悩ませています。これに関する助けは、私の正気にとって素晴らしいことです。

4

1 に答える 1

1

の URLにはservletと の両方があります。それらの 1 つを削除します。servlet-mapping/home.jspweb.xml

于 2013-10-27T21:16:46.913 に答える