Struts 2.5.2 官方 struts-2.5.2-min-lib.zip 僅含 7 個 JAR,實測專案啟動會報錯。經驗證,至少需要 9 個 JAR 才能正常運行。本文提供完整版本對照表,避免依賴地獄。
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
commons-lang3-3.4.jar
commons-logging-1.1.3.jar
freemarker-2.3.23.jar
ognl-3.1.10.jar
struts2-core-2.5.2.jar
javassist-3.20.0-GA.jar # 類別字節碼操作,OGNL/攔截器依賴
log4j-api-2.5.jar # 日誌門面 API,Struts 2.5 強制依賴 log4j2
| JAR 檔名 | 版本 | 用途 | 來源 |
|---|---|---|---|
| struts2-core | 2.5.2 | 核心框架 | min-lib / all |
| ognl | 3.1.10 | 表達式語言 | min-lib / all |
| freemarker | 2.3.23 | 模板引擎 | min-lib / all |
| commons-lang3 | 3.4 | 工具類庫 | min-lib / all |
| commons-fileupload | 1.3.2 | 檔案上傳 | min-lib / all |
| commons-io | 2.4 | IO 工具 | min-lib / all |
| commons-logging | 1.1.3 | 日誌門面 (舊) | min-lib / all |
| javassist | 3.20.0-GA | 字節碼操作 | all 套件 |
| log4j-api | 2.5 | 日誌門面 (新) | all 套件 |
log4j-api 是門面,實際實作需另行加入 log4j-core、log4j-slf4j-impl 等(視專案日誌方案)<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.2</version>
</dependency>
<!-- 遞移依賴會自動引入大部分,但建議顯式宣告關鍵依賴 -->
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.20.0-GA</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>
<!-- 實際日誌實作(任選一套) -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
struts.xml、web.xml(或註解)NoClassDefFoundError/ClassNotFoundExceptioncommons-* 系列(建議統一由 Spring Boot / 依賴管理 BOM 控制)Struts 2.5 官方 min-lib 缺少 javassist 與 log4j-api 兩個關鍵依賴。9 JAR 清單經實測驗證為最小可運行集合。Maven 專案建議直接依賴 struts2-core,並顯式宣告 javassist、log4j-api、log4j-core 以鎖定版本,避免遞移依賴衝突。