[英]java.lang.ClassNotFoundException error in the Servlet code
[英]Servlet Hello World Error - Root cause: java.lang.ClassNotFoundException:
我正在閱讀另一本令人驚嘆的Head First書。 這是“Head First Servlets & JSP - 通過 Sun 認證 Web 組件開發人員考試”。 我正在關注有關創建小型“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
我在此 Windows 7 操作系統 (OS) 上設置了 TOMCAT_HOME 目錄和 JAVA_HOME。 當我部署應用程序並啟動 Tomcat 時 1) 我看到一個 500 錯誤,指出找不到該類。 這是未找到的 Ch1Servlet.class。 然后,如果我刷新頁面,我會看到 2) 404 錯誤。 這些錯誤如下所示。
我哪里做錯了?
為了讓應用程序服務器正確加載您的類,您的 web 應用程序的結構應如下所示:
ch1/
|
+- WEB-INF/
|
+- classes/
| |
| +- Ch1Servlet.class
|
+- web.xml
所有的類和庫都在WEB-INF
文件夾下,特別是分別在classes
和lib
。
編輯 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>
``
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.