2015-09-04 277 views
0

我遇到了庫com.fasterxml.aalto-xml的問題。當com.fasterxml.aalto-xml處於Maven依賴關係中時解析XML

我有一個項目A(Dspace)不依賴庫com.fasterxml.aalto-xml。

我開發了一個庫B,它使用依賴於com.fasterxml.aalto-xml的庫C.

我不知道爲什麼,當com.fasterxml.aalto-xml得到由B的方式爲 依賴加入到A - > C,A拿起 com.fasterxml.aalto-xml做他一貫的XML解析。

問題是,它打破了應用程序。 com.fasterxml.aalto-xml無法正確解析最初由A產生的XML。出錯了。

我想明白爲什麼會發生。有沒有辦法告訴A不要使用com.fasterxml.aalto-xml,但在A項目中仍然有B - > C - >com.fasterxml.aalto-xml在工作。

這些XML解析器的特別之處是什麼?我只是不明白爲什麼A會選擇com.fasterxml.aalto-xml來處理它,而它沒有任何依賴。

我可以看到,lib也是一個osgi捆綁jar,可能它在這裏有任何含義?

我的意思是原來A(dSPACE的)作品,未經女低音和使用任何 解析器它,爲什麼選擇現在奧拓,它是在依賴?什麼機制允許?

回答

1

com.fasterxml:aalto-xml包含StAX API的實現。該API(它是從Java 6開始的JRE的一部分)使用描述here的服務提供者發現機制來定位實現。因此,只需將Aalto JAR添加到類路徑中,即可更改StAX API使用的實現。所有使用StAX API的庫(您的案例中的A和C)都會受到同樣的影響。