运行servlet时出现问题

时间:2009-04-23 11:54:08

标签: java tomcat servlets

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

这就是我在做的事情:

  1. 停止Tomcat。
  2. New Dynamic webproject。
  3. 调用项目TestProject
  4. 使用默认选项:Context =“TestProject”,Context Directory =“WebContent”,Java Source Directory =“src”
  5. 右键单击项目并选择新的servlet
  6. 使用默认包并调用类“HelloTest”所有其他选项都是defult
  7. 将URL映射更改为/ hello
  8. 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正在运行并提供页面,并且我有正确的路径。

1 个答案:

答案 0 :(得分:2)

首先检查是否正确部署了类。 另请参阅this question