解決Spring的java項目打包后執行出現“無法讀取方案文檔...“、“原因為 1) 無法找到文檔; 2) 無法讀取文檔; 3) 文檔的根元素不是...”問題


問題

一個用Spring建的java項目,在Eclipse或idea中運行正常,為什么打包后運行出現如下錯誤呢?

2019/07/10/19:04:07 WARN  [main] org.springframework.util.xml.SimpleSaxErrorHandler.warning(SimpleSaxErrorHandler.java:48) - Ignored XML validation warning
org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 76; schema_reference.4: 無法讀取方案文檔 'http://www.springframework.org/schema/beans/spring-beans.xsd', 原因為 1) 無法找到文檔; 2) 無法讀取
文檔; 3) 文檔的根元素不是 <xsd:schema>。
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.warning(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaWarning(Unknown Source)
 ....

原因分析

因為我們使用的Spring系列依賴包:spring-beans、spring-context、spring-aop、spring-jdbc、spring-tx等其中有部分配置文件是同名的:spring.facotries、spring.handlers、spring.schemas、spring.tooling。

spring-beans包展開圖片

spring-context包展開圖片

spring-aop包展開圖片

spring-jdbc包展開圖片

spring-tx包展開圖片

在進行打包的過程中,打包插件如果沒有進行詳細配置,這些同名的配置文件就會放在同一個目錄下,同名的文件可能會被替換,最后就會形成配置文件不全的情況。

解決辦法

將所有的配置文件中的配置信息進行手動合並。然后將項目jar包目錄\META-INF下的這4個文件用合並好的文件替換掉。

下面我提供了這4個已經合並好的文件(注意:本文件是針對Spring4.2及以下版本的,高版本還需自己合並)的下載地址:
鏈接: https://pan.baidu.com/s/1MXvpuwzgY-qfVYwJeveb_Q 提取碼: keh4

測試運行,正常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM