解決Spring的java項目打包後執行出現「沒法讀取方案文檔...「、「緣由爲 1) 沒法找到文檔; 2) 沒法讀取文檔; 3) 文檔的根元素不是...」問題

問題

一個用Spring建的java項目,在Eclipse或idea中運行正常,爲何打包後運行出現以下錯誤呢?java

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

spring-beans包展開圖片

spring-context包展開圖片

spring-aop包展開圖片

spring-jdbc包展開圖片

spring-tx包展開圖片

在進行打包的過程當中,打包插件若是沒有進行詳細配置,這些同名的配置文件就會放在同一個目錄下,同名的文件可能會被替換,最後就會造成配置文件不全的狀況。apache

解決辦法

將全部的配置文件中的配置信息進行手動合併。而後將項目jar包目錄\META-INF下的這4個文件用合併好的文件替換掉。bash

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

測試運行,正常。ide

相關文章
相關標籤/搜索