我在库com.fasterxml.aalto-xml中遇到麻烦。

我有一个不依赖库com.fasterxml.aalto-xml的项目A(Dspace)。

我开发了一个库B,该库使用依赖于com.fasterxml.aalto-xml的库C。


我不知道为什么当com.fasterxml.aalto-xml被添加为
通过B-> C依赖于A,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 bundle jar,在这里可能有任何含义吗?


我的意思是最初A(Dspace)无需女低音就可以使用
它具有解析器,为什么现在要依赖它就选择女低音?什么机制允许?

最佳答案

com.fasterxml:aalto-xml包含StAX API的实现。该API(是从Java 6开始的JRE的一部分)使用here中所述的服务提供商发现机制来定位实现。因此,只需将Aalto JAR添加到类路径中,即可更改StAX API使用的实现。所有使用StAX API的库(在您的情况下为A和C)都将受到同样的影响。

10-08 03:46