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

Struts2 + Hibernate 整合啟動報錯:Action class not found 完整排查

     編輯:程式設計綜合問答

錯誤關鍵資訊

Caused by: Action class [com.xu.action] not found
 - action - file:/.../struts.xml:8:70

核心原因

struts.xml 中配置的 class="com.xu.action" **找不到對應的類**。常見原因:

  1. **包名/類名拼寫錯誤**(大小寫敏感)。
  2. **Action 類未被編譯輸出**到 WEB-INF/classes(檢查 Build Path、Deployment Assembly)。
  3. **缺少包裝掃描配置**(Struts2 需在 struts.xml <package> 指定正確的 namespace 或掃描路徑)。
  4. **類未實現 Action 介面或繼承 ActionSupport**,導致無法實例化。

排查步驟

1. 檢查 struts.xml

<package name="default" namespace="/" extends="struts-default">
    <action name="login" class="com.xu.action.LoginAction" method="execute">
        <result name="success">/success.jsp</result>
    </action>
</package>
  • class 必須是**全限定類名**,且類存在於專案中。
  • method 預設為 execute,可省略。

2. 確認類編譯輸出

  • Eclipse:右鍵專案 → Properties → Deployment Assembly → 確認 src 映射到 WEB-INF/classes。
  • Maven:mvn clean compile 確認 target/classes/com/xu/action/LoginAction.class 存在。

3. 檢查 Action 類定義

package com.xu.action;

public class LoginAction extends ActionSupport {
    private String username;
    // getter/setter
    public String execute() {
        // 業務邏輯
        return SUCCESS;
    }
}
  • 繼承 ActionSupport(提供驗證、國際化等)。
  • 屬性需有 **getter/setter**,否則 Struts2 無法注入表單參數。

4. 關閉 devMode 避免效能影響(生產環境)

<constant name="struts.devMode" value="false" />

日誌中其他警告

  • log4j:WARN No appenders could be found → 加入 log4j.properties 或 log4j2.xml 到 classpath。
  • AprLifecycleListener init ... not found → 非致命,僅影響原生傳輸效能,可忽略或安裝 tcnative。

總結

Action class not found 90% 是 struts.xml 類名錯誤或類未編譯到輸出目錄。依序核對:XML 類名 → 類實際存在 → 編譯輸出路徑 → 類繼承關係。修正後重新部署即可。

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