我如何告诉我的应用程序它不应该使用 jar 中的外部服务提供程序?
由于某种原因,我们需要 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.*)不能与我们软件的其他部分一起工作(它们需要标准工厂)。
For some reason we need the xdb.jar from the Oracle XDK. This jar depends on the xmlparserv2.jar. The actual problem is that the xmlparserv2.jar comes with some provider-configuration files (META-INF/services). The jar has Services Providers for javax.xml.transform.TransformerFactory, javax.xml.parsers.SAXParserFactory and javax.xml.parsers.DocumentBuilderFactory. The implementations (from oracle.*) don't work together with some other parts of our software (they need the standard factories).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用单独的类加载器将 jar 与应用程序的其余部分隔离。这个问题涵盖了它。
You could use separate classloaders to isolate the jars from the rest of the application. This question about covers it.
您可以从 xmlparserv2.jar 中删除这些类
You could just remove these classes from the xmlparserv2.jar
参见此处 - “JNLP 类路径优先级 1.5 与 1.6”
See here - "JNLP classpath precedence 1.5 vs 1.6"
我通过删除服务(META-INF/services)解决了这个问题。我们运行了单元测试,一切正常。甚至我们的软件部分也依赖于 xmlparserv2.jar/xdb.jar。
I solved the problem by removing the services (META-INF/services). We ran our unit tests and everything worked. Even the parts of our software which are depending on xmlparserv2.jar/xdb.jar.