我在库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)都将受到同样的影响。