【问题标题】:Problem running a servlet运行 servlet 的问题
【发布时间】:2009-04-23 11:54:08
【问题描述】:

我在 Eclipse (Ganymede) 下尝试运行 java servlet 时遇到问题,我正在运行 Java 1.6 和 Apache Tomcat 6.0。

这是我正在做的:

  1. 停止 Tomcat。
  2. 新建动态网络项目。
  3. 调用项目TestProject
  4. 使用默认选项:Context = "TestProject"、Context Directory = "WebContent"、Java Source Directory = "src"
  5. 右键单击项目并选择新的 servlet
  6. 使用默认包并调用类“HelloTest”所有其他选项都是默认的
  7. 将 URL 映射更改为 /hello

servlet 的代码如下(我只编辑了 doGet 和 doPost 方法,其他的都是生成的):

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloTest
 */
public class HelloTest extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloTest() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter writer = response.getWriter();
        writer.write("Hello World");
        writer.flush();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

}

这是我尝试运行该项目的方式: 1. 保存项目 2. 右键单击​​项目并选择在服务器上运行。 3.选择现有的Tomcat服务器 4. 点击完成。

当我尝试浏览到http://localhost:8080/TestProject/hello 我收到一个异常,说找不到该类。

javax.servlet.ServletException: Wrapper cannot find servlet class HelloTest or a class it depends on
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)

根本原因

java.lang.ClassNotFoundException: HelloTest
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

我做错了吗?

如果我添加一个名为 test.jsp 的 .jsp 页面,它会完美显示,因此我知道 Tomcat 正在运行并提供页面,并且我有正确的路径。

【问题讨论】:

  • 您是否尝试过将您的 servlet 放入一个包而不是默认包中?另外,你的 servlet 是如何映射到 web.xml 文件上的?
  • 项目未设置为自动构建。菜单>项目>自动构建。

标签: java tomcat servlets


【解决方案1】:

首先检查类是否正确部署。 另见this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2021-07-04
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    相关资源
    最近更新 更多