我在使用库com.fasterxml.aalto-xml时遇到了问题。
我有一个不依赖于库com.fasterxml.aalto-xml的项目A(Dspace)。
我开发了一个库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但仍然有B - > C - > com.fasterxml.aalto-xml在A项目中工作。
那些XML解析器有什么特别之处?我只是不明白为什么A会选择com.fasterxml.aalto-xml来处理它,而它没有依赖它。
我可以看到lib也是一个osgi包jar,这可能有任何暗示吗?
我的意思是原来A(Dspace)没有alto工作并使用任何东西 解析器它有,为什么现在选择alto它在依赖?什么机制允许?
答案 0 :(得分:1)
com.fasterxml:aalto-xml
包含StAX API的实现。该API(它是从Java 6开始的JRE的一部分)使用描述here的服务提供者发现机制来定位实现。因此,只需将Aalto JAR添加到类路径中,即可更改StAX API使用的实现。所有使用StAX API的库(在您的情况下为A和C)都会受到同样的影响。