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

Struts2 驗證框架載入 DTD 失敗:離線環境或網路阻擋的解決方案

     編輯:程式設計綜合問答

錯誤


Caught exception while loading file action/Requiredstring-validation.xml
https://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd
java.io.FileNotFoundException: https://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd

原因

Struts2 驗證 XML 宣告 <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "https://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">,啟動時嘗試下載 DTD,若無網路或目標站點不可達(OpenSymphony 已關閉)則拋出異常。

解決方案

  1. 本地 DTD 目錄:將 DTD 檔放入專案 src/main/resources/dtd/,並在 web.xml 註冊 EntityResolver:
    
    public class LocalDTDEntityResolver implements EntityResolver {
        public InputSource resolveEntity(String publicId, String systemId) {
            if (systemId.contains("xwork-validator-1.0.2.dtd")) {
                return new InputSource(getClass().getResourceAsStream("/dtd/xwork-validator-1.0.2.dtd"));
            }
            return null;
        }
    }
    
  2. 升級 Struts2:新版本(2.5+)已內建 DTD 或移除外部依賴。
  3. 離線模式:JVM 參數 -Dxml.catalog.files=classpath:/catalog.xml 配合 OASIS XML Catalog 映射。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved