【问题标题】:XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/domXPathFactory#newInstance() 未能为默认对象模型创建 XPathFactory:http://java.sun.com/jaxp/xpath/dom
【发布时间】:2020-06-28 09:34:22
【问题描述】:

我的应用程序在 AIX 上出现 xpathfactory 错误,该错误发生在代码 XPathFactory xpf = XPathFactory.newInstance(); 中的这一行。但是,它在 windows 上工作正常。我已经提取了具有 XPathFactory 类的 rt.jar 并通过代码。从Internet上的数据和通过代码首先检查系统属性,如果没有找到则jaxp.properties。如果以上2个失败,则在类路径中搜索jar。我在两个jaxp中都设置了系统属性。属性和 appnode.tra 中。但是,它在 AIX 上失败。如何打印 jaxp 日志,我想让它在类路径中添加外部 jar 的情况下工作?(在 jaxp.properties 中,我已将属性设置为 javax.xml .xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom=com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl)

【问题讨论】:

  • 请编辑您的帖子并添加一些格式。还要说明您在 AIX 上使用的 java 版本,并引用您得到的确切错误消息。

标签: java xpath aix jaxp


【解决方案1】:

我猜你使用的是 IBM JDK,它的默认 XPath 实现不是 com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl —— 这是完全合法的。

在 JDK9 上有一个方法 XPathFactory.newDefaultInstance() 这样你就不必再知道默认工厂的名称了。

或者,如果您没有设置任何系统属性并且类路径中没有任何内容,请尝试查看加载了什么。

【讨论】:

  • 是的,我们使用的是 IBM JDK。远程系统有 jdk 8,我们无法升级它。我怎么知道加载了什么?我在 windows 和 aix 上都运行了独立的 java 应用程序。在 AIX 上,org.apache.xpath.jaxp.xpathfactoryimpl 类是从 xml.jar 加载的,而我们从 bw 应用程序的 java home 中删除了 xml.jar。
  • 也许你应该尝试实例化org.apache.xpath.jaxp.xpathfactoryimpl(如果可用),否则com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl。不要觉得你必须使用 JAXP factory.newInstance() 机制——如果更方便的话,你可以直接实例化这些类。
猜你喜欢
  • 2019-06-12
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多