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

Struts2-Spring-Plugin 加載失敗:版本不匹配導致 unable to load struts-plugin.xml

     編輯:程式設計綜合問答

錯誤堆疊核心訊息

Caused by: Unable to load jar:file:/.../struts2-spring-plugin-2.3.4.1.jar!/struts-plugin.xml
Caused by: Connection refused: connect
    at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)

根本原因

Struts2 核心版本與 Spring 插件版本不一致。`struts2-spring-plugin-2.3.4.1.jar` 內部的 `struts-plugin.xml` 可能引用了 DTD/XSD 檔案,解析時嘗試從網絡下載 (如 `https://struts.apache.org/dtds/struts-2.3.dtd`),但網絡不通或檔案不存在,導致 `Connection refused`。版本不匹配時,類路徑衝突也會引發類似解析錯誤。

解決方案:統一版本號




    2.5.33 



    
    
        org.apache.struts
        struts2-core
        ${struts2.version}
    
    
    
        org.apache.struts
        struts2-spring-plugin
        ${struts2.version}
    
    
    
        org.apache.struts
        struts2-json-plugin
        ${struts2.version}
    

進階排查步驟 (若統一版本仍報錯)

  1. 檢查 JAR 衝突:`mvn dependency:tree | grep struts` 確認無多版本共存。
  2. 離線模式/本地 DTD:若環境無法訪問外網,需在專案資源目錄放置 DTD/XSD,並在 `struts.xml` 開頭指定 `DOCTYPE` 系統標識符指向本地檔案。
  3. 排除傳遞依賴:若其他庫傳遞了舊版 Struts,用 `` 排除。
  4. 清理緩存:`mvn clean`、刪除 IDE 索引、重新部署 Tomcat (清理 `work/Catalina/localhost`)。

常見版本對應表 (部分)

Struts2 CoreSpring PluginSpring 版本建議備註
2.5.x (最新維護)2.5.x5.3.x推薦新專案
2.3.37 (終結版)2.3.374.3.x / 5.0.x舊專案維護
2.3.16.32.3.16.33.2.x / 4.0.x題目解決版本
2.3.4.12.3.4.13.1.x極舊,含已知安全漏洞 (CVE-2013-xxxx)

最佳實踐

  • **統一版本屬性**管理所有 Struts 模組。
  • **鎖定具體版本號**,避免 `LATEST`/`RELEASE` 導致不可重現構建。
  • 定期檢查 Struts 安全公告,及時升級修補漏洞 (如 S2-062, S2-063 等)。
  • 考慮遷移至 Spring Boot + Spring MVC,Struts2 已進入維護模式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved