首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Tomcat 啟動報錯 HTTP Status 500:Wrapper cannot find servlet class 完整排查指南

     編輯:Java 綜合教學

錯誤現象

HTTP Status 500 - Wrapper cannot find servlet class com.servlet.servlet.RegServlet 
or a class it depends on

root cause
java.lang.ClassNotFoundException: com.servlet.servlet.RegServlet

核心原因

Tomcat 類加載器在 WEB-INF/classes 或 WEB-INF/lib 中找不到對應的 .class 檔案,常見於:

  • 專案未正確編譯輸出
  • Eclipse/IDEA 部署路徑配置錯誤
  • Tomcat 工作目錄殘留舊緩存
  • Maven 資源過濾導致類文件未複製

標準排查三步驟

  1. 清理專案產出
    IDE 執行 Project → Clean,確保 target/classes 或 bin 目錄下生成最新 .class。
  2. 清除 Tomcat 緩存
    刪除 $CATALINA_BASE/work/Catalina/localhost/<專案名> 整個目錄,或在 IDE 中對 Server 選擇 Clean Tomcat Work Directory。
  3. 重新發布/部署
    Server → Clean → Publish,或重新啟動 Server 並勾選「自動發布」。

進階檢查清單

檢查項說明
web.xml servlet-class 拼寫全限定名需與 Java 類完全一致,區分大小寫
類是否在 WEB-INF/classes打開 WAR 或部署目錄確認 com/servlet/servlet/RegServlet.class 存在
Maven pom.xml 打包配置確認 <packaging>war</packaging>、資源目錄正確
依賴傳遞缺失若 Servlet 依賴第三方 JAR,確保 WEB-INF/lib 含有該 JAR
JDK 版本一致性編譯目標版本與 Tomcat 運行 JDK 一致(如皆為 1.8)

快速驗證腳本

# Linux/Mac 一鍵清理並重新部署(以 Maven 專案為例)
mvn clean package -DskipTests
rm -rf $CATALINA_BASE/webapps/your-app*
cp target/your-app.war $CATALINA_BASE/webapps/
$CATALINA_BASE/bin/shutdown.sh && sleep 3 && $CATALINA_BASE/bin/startup.sh

總結

90% 的 ClassNotFoundException 歸因於「編譯產出未正確進入部署目錄」或「舊緩存干擾」。養成 Clean → Clean Server Work Directory → Republish 的肌肉記憶,能秒殺此類問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved