EXCEPTION java.lang.ClassNotFoundException:servlet - 但是Servlet存在;而web.xml绝对正确

时间:2012-12-27 16:06:57

标签: google-app-engine servlets classnotfoundexception

刚刚使用Eclipse June 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

2 个答案:

答案 0 :(得分:3)

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

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

请参阅Java Application Configuration

每个自定义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>

答案 1 :(得分:0)

嗨,请看看: ClassNotFoundException with ServletContextlistener

使用servlet-api

检查问题(第二个)