【问题标题】:EXCEPTION java.lang.ClassNotFoundException: servlet - But the Servlet is present; And web.xml is absolutely correct异常 java.lang.ClassNotFoundException: servlet - 但是 Servlet 存在;而 web.xml 是绝对正确的
【发布时间】:2012-12-13 00:20:45
【问题描述】:

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

【问题讨论】:

  • 向我们展示 servlet 的完整源代码(从第 1 行到最后一行)。
  • 包时钟;导入 java.io.IOException;导入 javax.servlet.http.*; @SuppressWarnings("serial") public class ClockServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); resp.getWriter().println("你好,世界"); } }

标签: google-app-engine servlets classnotfoundexception


【解决方案1】:

您好,请看: ClassNotFoundException with ServletContextlistener

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

【讨论】:

  • 这可能是答案,但通常最好至少包含链接中答案的重要部分;-)
【解决方案2】:

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

标签是&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;

请参考Java Application Configuration

必须在启动时加载每个自定义 servlet,以让 GA 引擎实例化类并接受请求。 这是用于在 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>

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 2019-03-25
    • 2015-11-19
    • 2015-03-01
    • 2015-02-08
    • 2012-07-24
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    相关资源
    最近更新 更多