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

Eclipse Tomcat 404 故障排查:Server Locations 配置詳解

     編輯:程式設計綜合問答

現象描述

  • Console 顯示 Tomcat 啟動成功 (Server startup in 724 ms)
  • 訪問 https://localhost:8080 顯示 404
  • 部署的 Servlet 映射路徑均返回 404
  • 日志無明確錯誤,僅有 APR 庫警告和 SetPropertiesRule 警告

根因分析

Eclipse 內置 Tomcat 默認使用 工作空間元數據部署模式,而非標準 webapps 目錄。導致:

  1. 項目發布路徑為 .metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/
  2. Tomcat 實際監聽的 docBase 指向此臨時目錄
  3. 若 Server Locations 配置不當,請求無法正確映射到部署應用

解決方案:修改 Server Locations

步驟 1:打開 Server 視圖配置

1. Eclipse 左側 Servers 視圖雙擊 "Tomcat v7.0 Server at localhost"
2. 打開 Server 編輯器概覽頁

步驟 2:關鍵配置修改

配置項默認值 (問題)推薦值 (解決)說明
Server LocationsUse workspace metadataUse Tomcat installation使用標準 webapps 部署目錄
Deploy pathwtpwebappswebapps與 Tomcat 原生結構一致
Server Options默認勾選取消勾選 "Modules auto reload by default"避免熱部署導致類加載器洩漏

步驟 3:清理重新部署

1. 右鍵 Server -> Clean...
2. 右鍵 Server -> Clean Tomcat Work Directory...
3. 右鍵項目 -> Maven -> Update Project (若為 Maven 項目)
4. 重新啟動 Server

深度排查清單

1. 檢查 web.xml Servlet 映射

<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>  <!-- 確保無拼寫錯誤 -->
</servlet-mapping>

2. 驗證項目發布組裝結構

# 清理後重新啟動,檢查部署目錄結構
$CATALINA_BASE/webapps/
├── Test123/                 # 項目上下文路徑
│   ├── WEB-INF/
│   │   ├── web.xml
│   │   ├── classes/
│   │   │   └── com/example/HelloServlet.class  # 編譯產物必須存在
│   │   └── lib/             # 依賴 JAR 包
│   └── index.jsp

3. 端口衝突檢測

# Windows 檢查 8080 端口佔用
netstat -ano | findstr :8080
# 若被佔用,修改 server.xml 

4. 關鍵日志解讀

[WARNING] [SetPropertiesRule]{Server/Service/Engine/Host/Context} 
Setting property 'source' to 'org.eclipse.jst.jee.server:Test123' 
did not find a matching property.

此警告通常無害,僅表示 Eclipse 元數據屬性映射提示,不影響運行。

替代方案:外部 Tomcat + Remote Debug

# 1. 下載獨立 Tomcat 解壓
# 2. bin/startup.sh 啟動
# 3. Eclipse 配置 Remote Java Application
#    Host: localhost, Port: 8000 (需啟用 JPDA: catalina.sh jpda start)
# 4. Maven 配置 cargo-maven-plugin 熱部署

避坑經驗總結

  1. 不要在項目屬性中手動修改 Deployment Assembly,由 Server Locations 統一管理
  2. Maven 項目確保 mvn eclipse:eclipse 或 m2e 插件正常生成 .settings
  3. JSP 修改不生效:檢查 org.apache.jasper.servlet.JspServlet 的 development=true 和 modificationTestInterval=0
  4. 類衝突:WEB-INF/lib 與 Tomcat lib 目錄下 JAR 版本衝突導致 LinkageError
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved