maven新增 xfire-all-1.2.6.jar 導致的spring配置檔案異常
阿新 • • 發佈:2018-12-31
1. 環境
maven
spring-3.2.3
xfire-1.2.6
2. 問題描述
在工程中的 pom.xml 中新增 xfire
<dependency>
<groupId>org.codehaus.xfire</groupId>
<artifactId>xfire-all</artifactId>
<version>1.2.6</version>
</dependency>
只是添加了這個jar包,其他配置檔案都沒動,啟動tomcat,報瞭如下的錯誤:
Line 8 in XML document from class path resource [applicationContext.xml] is invalid;
nested exception is org.xml.sax.SAXParseException:
Document root element "beans", must match DOCTYPE root "null".
檢視工程的 Java Build Path 中的 Maven Dependencies 發現多了個 spring 的jar包:
工程中的 spring 用的版本是 3.2.3 的,而這個多出來的 spring 版本是 1.2.6 的,造成了 jar 包衝突。
用壓縮軟體開啟 xfire-all-1.2.6.jar ,在其目錄 META-INF\maven\org.codehaus.xfire\xfire-jms 的 pom.xml 中發現:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</dependency>
只需要將這個 spring-1.2.6.jar 從工程中刪除即可。
但是發現,在 Maven Dependencies 中根本刪除不了。
瞭解到,這個 spring-1.2.6.jar 是依賴於 xfire-all-1.2.6 的,故而,在 工程的 pom.xml 中,將這個依賴關係去掉即可--- 加上 <exclusions>
<dependency>
<groupId>org.codehaus.xfire</groupId>
<artifactId>xfire-all</artifactId>
<version>1.2.6</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>1.2.6</version>
</exclusion>
</exclusions>
</dependency>
轉者注:修改pom.xml資料要在新建maven專案或者從SVN檢出沒有convert to maven project專案中進行.