我在使用库com.fasterxml. alto-xml时遇到了麻烦。
我有一个项目a (Dspace),不依赖于库com.fasterxml.aalto-xml。
我开发了一个库B,它使用依赖于com.fasterxml. alto-xml的库C。
我想知道为什么com.fasterxml。alto-xml被添加为通过B -> C的方式依赖于A, A拾取com.fasterxml。aalto-xml来做常规的XML解析。
问题是,它破坏了应用程序。com.fasterxml。alto- XML在正确解析最初与a一起出现的XML时遇到了问题。
我想知道为什么会发生这种事。有没有办法告诉a不要使用com.fasterxml ?aalto-xml,但仍然有B -> C -> com.fasterxml。alto-xml在A项目中起作用。
这些XML解析器有什么特别之处?我只是不明白为什么A会选择com.fasterxml。alto-xml可以与它一起工作,而它对它没有任何依赖。
我可以看到这个库也是一个osgi bundle jar,它在这里可能有什么含义吗?
我的意思是原来A (Dspace)不需要alto就可以使用任何东西解析器它有,为什么现在选择alto,它是在依赖关系?是什么机制允许的?
com.fasterxml:aalto-xml
包含StAX API的实现。该API(是从Java 6开始的JRE的一部分)使用这里描述的服务提供者发现机制来定位实现。因此,只需将Aalto JAR添加到类路径中,就可以更改StAX API使用的实现。所有使用StAX API的库(在您的例子中是A和C)将同样受到影响。