1

刚刚用 Eclipse 6 月 4.2 创建了一个全新的项目 使用 Google App Engine SDK 1.7.4

Eclipse 创建一个 Servlet

public class ClockServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world");
    }
}

和一个简单的 web.xml

    <servlet>
    <servlet-name>Clock</servlet-name>
    <servlet-class>clock.ClockServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Clock</servlet-name>
    <url-pattern>/clock</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

当我部署它时,我得到了通用的 HTML 错误页面:错误:服务器错误 ,从日志中我得到:

    EXCEPTION java.lang.ClassNotFoundException: clock.ClockServlet
at com.google.appengine.runtime.Request.process-0925dcee3db2e16a(Request.java)

但是 servlet 存在并且 web.xml 是正确的我哪里错了?

tnx

4

2 回答 2

3

好吧,似乎 Servlet 和 Web.xml 是正确的,但是缺少使用 Google App Engine 必须的标签。我想知道为什么文档中没有下划线和大写字母。

标记是<load-on-startup>1</load-on-startup>

请参考Java 应用程序配置

每个自定义 servlet 必须在启动时加载,以让 GA Engine 实例化类并接受请求。这是用于在 GAE 中部署应用程序的最终 web.xml

    <servlet>
    <servlet-name>Clock</servlet-name>
    <servlet-class>clock.ClockServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Clock</servlet-name>
    <url-pattern>/clock</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>
于 2012-12-28T09:33:16.290 回答
0

嗨,请看一下: ClassNotFoundException with ServletContextlistener

使用 servlet-api 检查问题(第二个)

于 2014-01-29T20:06:25.490 回答