如何告诉我的应用程序它不应该使用 jar 中的外部服务提供商?



由于某些原因,我们需要来自Oracle XDK的xdb.jar。这个jar依赖于xmlparserv2.jar。实际问题是xmlparserf2.jar附带了一些提供者配置文件(META-INF/services)。该jar具有用于javax.xml.transform.TransferFactoryjavax.xml.parsers.SXParserFactoryjavax.xml.parsers.DocumentBuilderFactory的服务提供商。这些实现(来自oracle.*)与我们软件的其他部分无法协同工作(它们需要标准工厂)。

您可以使用单独的类加载器将jar与应用程序的其他部分隔离开来。这个关于的问题涵盖了它。

您可以从xmlparserv2.jar 中删除这些类

请参阅此处-"JNLP类路径优先级1.5 vs 1.6"

我通过删除服务(META-INF/services)解决了这个问题。我们进行了单元测试,一切正常。甚至是我们软件中依赖xmlparserv2.jar/xdb.jar的部分。

最新更新