Servlet Hello World错误 - 根本原因:java.lang.ClassNotFoundException:

时间:2017-09-25 23:46:30

标签: java tomcat servlets

我正在阅读另一本令人惊叹的 Head First 书。这是,#34; Head First Servlets& JSP - 通过Sun认证的Web组件开发人员考试"。我正在关注创建一个小型的#34; hello world"程序类型。这是第30至31页。

我正在以下列方式编译Java源代码: C:\Users\username\Desktop\Servlets_HF_Example\project1>javac -classpath C:\tomcat\ apache-tomcat-9.0.0.M26-windows-x86\apache-tomcat-9.0.0.M26\lib\servlet-api.jar -d classes src/Ch1Servlet.java

找不到的类,即500错误的原因,具有以下源代码:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Ch1Servlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        PrintWriter out = response.getWriter();
        java.util.Date today = new java.util.Date();
        out.println("<html> " + 
                    "<body> " + " <h1 align=center>Head First Chapter 1 Servlet</h1>"
                    + "<br>" + today + "</body> " + "</html>");

    }


}

web.xml文件包含以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">


<servlet>
    <servlet-name>Chapter1 Servlet</servlet-name>
    <servlet-class>Ch1Servlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Chapter1 Servlet</servlet-name>
    <url-pattern>/Serv1</url-pattern>
</servlet-mapping>

</web-app>

我有以下代码的文件夹结构:

 project1
        |
        |
       +classes
          | 
          Ch1Servlet.class
       +etc
          |
          web.xml
       +src
          |
          Ch1Servlet.java

放入tomcat webapps目录的项目结构如下:

   ch1
     |
     |
     +classes
         |
         Ch1Servlet.class
     +WEB-INF
         |
         web.xml

enter image description here 图0:已部署项目的文件夹结构

我在此Windows 7操作系统(OS)上设置了TOMCAT_HOME目录并设置了JAVA_HOME。当我部署应用程序并启动Tomcat 1)时,我看到500错误,表示找不到该类。这是找不到的Ch1Servlet.class。然后,如果我刷新页面,我会看到2)404错误。这些错误如下所示。

enter image description here 图1:500错误 - 第一次单击

enter image description here 图2:404 - 第二次点击

我哪里出错了?

2 个答案:

答案 0 :(得分:2)

为了让应用服务器正确加载您的类,您的webapp结构应如下所示:

ch1/
 |
 +- WEB-INF/
     |
     +- classes/
     |   |
     |   +- Ch1Servlet.class
     |
     +- web.xml

所有类和库都位于WEB-INF文件夹下,具体分别位于classeslib

答案 1 :(得分:0)

编辑web.xml

<servlet-name>Chapter1 Servlet</servlet-name>
<servlet-class>packagenameofCh1Servlet.Ch1Servlet</servlet-class>

<servlet-name>Chapter1 Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>

``