Java 我如何告诉我的应用程序它不应该';不使用jar中的外部服务提供者吗?

Java 我如何告诉我的应用程序它不应该';不使用jar中的外部服务提供者吗?,java,jar,classpath,jnlp,oracle-xdk,Java,Jar,Classpath,Jnlp,Oracle Xdk,出于某种原因,我们需要Oracle XDK中的xdb.jar。此jar依赖于xmlparserv2.jar。实际问题是xmlparserv2.jar附带了一些提供程序配置文件(META-INF/services)。jar提供了javax.xml.transform.TransformerFactory、javax.xml.parsers.SAXParserFactory和javax.xml.parsers.DocumentBuilderFactory的服务提供者。这些实现(来自oracle.*)

出于某种原因,我们需要Oracle XDK中的xdb.jar。此jar依赖于xmlparserv2.jar。实际问题是xmlparserv2.jar附带了一些提供程序配置文件(META-INF/services)。jar提供了javax.xml.transform.TransformerFactory、javax.xml.parsers.SAXParserFactory和javax.xml.parsers.DocumentBuilderFactory的服务提供者。这些实现(来自oracle.*)不与我们软件的某些其他部分一起工作(它们需要标准工厂)。

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

您可以从xmlparserv2.jar中删除这些类“JNLP classpath priority 1.5 vs 1.6”

您可以使用单独的类加载器将JAR与应用程序的其余部分隔离开来。这大约涵盖了它。

您可以使用单独的类加载器将JAR与应用程序的其余部分隔离开来。这大约涵盖了它。

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

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

谢谢,但这并不能解决我的问题。xmlparserv2.jar正在覆盖jre中的类。我不能在jre之前加载xmlparserv2.jar。(可以吗?)这就是问题讨论的内容——如何以及在什么版本下。好吧,那么我真的不了解解决方法。xmlparserv2.jar包括以下包:org.xml.sax.*org.w3c.dom.*oracle.xml.*javax.xml.*问题可能来自javax.xml.*包…但是我如何告诉运行时不要使用jar的这一部分呢?谢谢,但是这并不能解决我的问题。xmlparserv2.jar正在覆盖jre中的类。我不能在jre之前加载xmlparserv2.jar。(我可以吗?)这就是问题讨论的内容-如何以及在什么版本下。好吧,那么我真的不了解解决方法。xmlparserv2.jar包括以下包:org.xml.sax.*org.w3c.dom.*oracle.xml.*javax.xml.*问题可能来自javax.xml.*包…但是我如何告诉运行时不要使用jar的这一部分?抱歉,但是这是不可能的。xmlparserv2.jar的许可证不允许这样做。xmlparserv2.jar需要这些类。抱歉,这是不可能的。xmlparserv2.jar的许可证不允许这样做。xmlparserv2.jar需要这些类。