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

Eclipse Tomcat 部署專案 404 無法存取:WebContent vs WebRoot 目錄名稱不匹配

     編輯:程式設計疑難解答

問題現象

  • 專案部署至 Tomcat 後,`https://localhost:8080/` 顯示 404
  • 舊專案仍可正常存取
  • Eclipse 控制台無錯誤日誌

根本原因

**部署組件路徑映射錯誤**:MyEclipse 專案預設輸出目錄為 `WebRoot`,轉為 Eclipse 後未更新為 `WebContent`,導致 Tomcat 找不到靜態資源與 `WEB-INF/web.xml`。

解決步驟

方法一:修改 Deployment Assembly(推薦)

  1. 專案右鍵 → **Properties** → **Deployment Assembly**
  2. 檢查 `Source` 欄位是否為 `/WebContent`(或專案實際 Web 根目錄)
  3. 若顯示 `/WebRoot` 或其他,點選 **Remove** 移除
  4. 點選 **Add...** → **Folder** → 選擇正確的 Web 根目錄(通常是 `WebContent`)
  5. `Deploy Path` 設為 `/`
  6. Apply → OK

方法二:檢查 `.settings/org.eclipse.wst.common.component`


<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="MyProject">
        <wb-resource deploy-path="/" source-path="/WebContent"/>  <!-- 關鍵行 -->
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
        <property name="context-root" value="MyProject"/>
        <property name="java-output-path" value="/MyProject/target/classes"/>
    </wb-module>
</project-modules>

確保 `source-path="/WebContent"` 與實際目錄名稱一致。

方法三:重新建立伺服器配置

  1. Servers 視圖 → Tomcat 右鍵 → **Delete**(僅移除伺服器配置,不刪除安裝)
  2. 重新新增伺服器:New → Server → 選擇 Tomcat → Next
  3. 將專案 Add 到 Configured 列表 → Finish
  4. 清理 Tomcat:右鍵 → **Clean** → **Clean Tomcat Work Directory**
  5. 重新啟動伺服器

驗證檢查清單

  1. 專案結構:`WebContent/WEB-INF/web.xml` 存在
  2. 部署後 `wtpwebapps/MyProject/WEB-INF/web.xml` 存在
  3. Tomcat 控制台啟動日誌出現:`Deployment of web application directory [...] has finished`
  4. 瀏覽器存取 `https://localhost:8080/MyProject/` 正常

常見誤區對照

誤區正確認知
以為 `WebContent`/`WebRoot` 只是名稱不同Eclipse WTP **強制要求** `WebContent` 作為標準 Web 根目錄名稱
只修改 `web.xml` 路徑部署路徑由 Deployment Assembly 決定,與 `web.xml` 內容無關
以為 Maven 專案不受影響Maven 專案 `src/main/webapp` 對應 `WebContent`,同樣需正確映射

Maven 專案特殊配置


<!-- pom.xml -->
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <warSourceDirectory>src/main/webapp</warSourceDirectory> <!-- 預設即此 -->
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

Eclipse 中 Maven 專案:Properties → Deployment Assembly → 自動包含 `src/main/webapp` → `deploy-path: /`,通常無需手動調整。

徹底清理重建指令(命令列)


# 專案目錄下
mvn clean eclipse:clean eclipse:eclipse -Dwtpversion=2.0

# 或 Eclipse 中
Project → Clean → 勾選所有專案 → Clean
Server → Clean Tomcat Work Directory
Server → Publish

掌握 Eclipse WTP 部署組件映射機制,即可快速解決專案遷移、目錄重命名、Maven 轉換等場景下的 404 問題,確保 Web 根目錄正確發布至 Tomcat。

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