java - 未找到 XPathFactory 实现,ubuntu 服务器中的 xpath 工厂实例创建问题。如何解决问题?

标签 java ubuntu xpath saxon

我正在尝试创建一个新的 xpath 工厂实例,它在我的本地机器上运行完美,没有任何问题,但在我的 ubuntu 服务器(16.0)java 1.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)

我已阅读以下文章,

https://saxonica.plan.io/issues/1944

Syntax error in javax.xml.xpath.XPathFactory provider-configuration file of Saxon-HE 9.3

并更新了我的代码,如下所示,
 xPathfactory = XPathFactory.newInstance(
             XPathFactory.DEFAULT_OBJECT_MODEL_URI, "net.sf.saxon.xpath.XPathFactoryImpl",
              ClassLoader.getSystemClassLoader());

但它仍然抛出以下错误。

我在本地和服务器实例中都使用 saxon 9.3.0.5 版本。

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

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

最佳答案

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

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

一种解决方法是直接实例化 Saxon 的 XPathFactory(使用 new net.sf.saxon.xpath.XPathFactoryImpl()),而不是使用 JAXP 搜索机制。这在任何情况下都更有效。

关于java - 未找到 XPathFactory 实现,ubuntu 服务器中的 xpath 工厂实例创建问题。如何解决问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54283920/

相关文章:

python - Scrapy xpath 不起作用(也许是 parbase 的东西?)

java - 从 lambda 表达式中的方法返回值

java - logback 未设置 Spring 日志记录阈值

html - 某个兄弟之前的所有子元素的 XPath?

Ubuntu mv 命令只复制了,但源文件仍然存在

MySQL Server 频繁关闭,现在不会重新启动

c# - 哪个网页元素标签更适合使用 Webdrive 定位和获取值(value)

java - 无法从 Spring Boot 微服务模块中的 Zuul header 获取 JWT token

java - java 8 是否有与antlr4 一起使用的编译器代码?

python-2.7 - PYTHONPATH 在 ubuntu 13.04 中显示为空