Java 未找到XPathFactory实现,ubuntu服务器中存在xpath factory实例创建问题。如何解决这个问题?

Java 未找到XPathFactory实现,ubuntu服务器中存在xpath factory实例创建问题。如何解决这个问题?,java,ubuntu,xpath,saxon,Java,Ubuntu,Xpath,Saxon,我正在尝试创建一个新的xpath工厂实例,它在我的本地机器上运行得很好,没有任何问题,但在我的ubuntu服务器(16.0)Java1.7实例中抛出以下错误 SEVERE: Caught exception : javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory implementation found for the object model: http://java.sun.com/jaxp/xpath/do

我正在尝试创建一个新的xpath工厂实例,它在我的本地机器上运行得很好,没有任何问题,但在我的ubuntu服务器(16.0)Java1.7实例中抛出以下错误

SEVERE: Caught exception : javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
at javax.xml.xpath.XPathFactory.newInstance(XPathFactory.java:268)
我读了以下文章

并更新了我的代码,如下所示

 xPathfactory = XPathFactory.newInstance(
             XPathFactory.DEFAULT_OBJECT_MODEL_URI, "net.sf.saxon.xpath.XPathFactoryImpl",
              ClassLoader.getSystemClassLoader());
但它仍然抛出以下错误

SEVERE: Caught exception : javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
at javax.xml.xpath.XPathFactory.newInstance(XPathFactory.java:268)
我在本地和服务器实例中都使用saxon 9.3.0.5版本

我使用这个版本是因为与最新版本相比,它提供了更快的xslt转换


我做错了什么?任何帮助都将不胜感激。提前感谢。

首先,如果您在升级到新的Saxon版本时因为性能下降而遇到问题,那么为了整个用户社区的利益,我强烈建议您与我们合作,以确定并修复该问题,而不是坚持使用带有已知错误的旧版本

我怀疑你已经正确地识别了这个问题。它有着漫长而复杂的历史。IIRC(这可能是一种简化):JDK5要求服务文件的格式不同于文档格式,而Saxon使用了有效的格式。JDK 6接受了“错误”的格式以及正确的格式。JDK 7只接受正确的格式。因此,旧版本的Saxon不能与新版本的JDK一起工作——至少就这个接口而言是如此


解决方法是直接实例化Saxon的XPathFactory(使用
new net.sf.Saxon.xpath.XPathFactoryImpl()
),而不是使用JAXP搜索机制。无论如何,这要有效得多

谢谢你的帮助,迈克尔。它现在工作得很好。