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

Struts2 不同版本必備 JAR 包清單:2.0.x vs 2.3.x 依賴差異全解析

     編輯:Java 綜合教學

Struts2 不同版本必備 JAR 包清單:2.0.x vs 2.3.x 依賴差異全解析

Struts2 版本眾多,依賴傳遞關係複雜,版本不匹配是導致 404、ClassNotFound、NoSuchMethodError 的首因。本文整理兩個主流版本系的必備 JAR 清單,並給出 Maven 依賴最佳實踐,告別手動導包地獄。

Struts 2.3.4.1 版本必備 JAR(9 個核心包)

此版本開始引入 commons-io、commons-lang3、javassist 三個新強依賴,缺一不可。

JAR 包版本作用
struts2-core2.3.4.1核心控制器、攔截器、結果類型
xwork-core2.3.4.1命令模式核心,ActionInvocation、ValueStack
ognl3.0.5表達式語言,屬性訪問、類型轉換
freemarker2.3.19UI 標籤模板引擎
commons-logging1.1.1日志門面
commons-fileupload1.2.2文件上傳解析
commons-io2.0.1IO 流擴展(2.3.x 新增)
commons-lang33.1lang 工具類增強(2.3.x 新增)
javassist3.11.0.GA字節碼操作,動態代理(2.3.x 新增)

Struts 2.0.11.1 版本必備 JAR(6 個核心包)

早期版本依賴較少,但 ognl、freemarker 版本較低,與新版不兼容。

JAR 包版本示例作用
struts2-core2.0.11.1核心
xwork2.0.4核心
ognl2.6.9表達式語言
freemarker2.3.8模板引擎
commons-logging1.0.4日志
commons-fileupload1.1.1文件上傳

Maven 依賴最佳實踐(強烈建議)

只聲明 struts2-core,其餘由傳遞依賴自動引入,版本由 Struts 官方 BOM 統一管理。

<properties>
    <struts2.version>2.3.37</struts2.version> <!-- 或 2.5.28 等 -->
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-bom</artifactId>
            <version>${struts2.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
    </dependency>
    <!-- 可選:約定優於配置插件 -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-convention-plugin</artifactId>
    </dependency>
    <!-- 可選:JSON 插件 -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-json-plugin</artifactId>
    </dependency>
</dependencies>

常見坑點與排查

  1. 手動導包版本不一致:如混用 ognl-3.x 與 struts2-core-2.0.x → NoSuchMethodError。
  2. 缺少 javassist:Struts 2.3+ 動態代理依賴 javassist,缺失報 ClassNotFoundException: javassist.ClassPool。
  3. commons-lang3 vs commons-lang:2.3.x 依賴 commons-lang3(包名 org.apache.commons.lang3),舊代碼用 commons-lang(org.apache.commons.lang)需遷移。
  4. Tomcat 共享類加載器衝突:將 JAR 放入 WEB-INF/lib 而非 Tomcat lib 目錄,避免多應用版本衝突。

版本選擇建議

  • 新項目:直接用 Struts 2.5.x(最新 2.5.28+),JDK 8+、Servlet 3.0+、Spring 4.x+,安全修補及時。
  • 維護舊項目:鎖定具體版本(如 2.3.37),使用 BOM 管理傳遞依賴,拒絕手動複製 JAR。
  • 升級舊項目:先升級到 2.3.x 系列,解決 commons-lang3、javassist 依賴,再考慮 2.5.x(需關注 DTD、攔截器棧、標籤庫變更)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved