【发布时间】:2014-05-21 01:58:03
【问题描述】:
我正在尝试使用 XPathFactory 来评估 Java 应用程序中的表达式。但我遇到了撒克逊人特有的错误。有一次我将 Saxon 用于某些功能,为此我必须设置一个系统属性:
System.setProperty("javax.xml.xpath.XPathFactory:" + NamespaceConstant.OBJECT_MODEL_SAXON,
"net.sf.saxon.xpath.XPathFactoryImpl");
XPathFactory xpf = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON);
但是,现在我只想使用默认的 DOM (org.w3c.dom.Document) 进行一些 XML 处理并使用 xpath 进行处理,因此不需要 Saxon。但是当我尝试创建 XPathFactory 时,我仍然收到 Saxon 错误消息:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: net/sf/saxon/lib/EnvironmentVariableResolver
at net.sf.saxon.xpath.XPathFactoryImpl.<init>(XPathFactoryImpl.java:26)
...
我什至尝试过“重置”系统属性:
System.setProperty("javax.xml.xpath.XPathFactory:",
"org.apache.xpath.jaxp.XPathFactoryImpl");
XPathFactory factory = XPathFactory.newInstance();
和
System.setProperty("javax.xml.xpath.XPathFactory:",
"http://java.sun.com/jaxp/xpath/dom");
XPathFactory factory = XPathFactory.newInstance();
但这无济于事,我仍然收到相同的错误消息。
我如何摆脱它以便再次使用默认的 XPathFactory? (在我尝试使用 Saxon 之前,这已经很好了)
【问题讨论】:
-
你是否从类路径中删除了 Saxon ?
-
好吧,我不能。稍后将需要它来处理其他事情。我需要能够选择使用默认的 XPathFactory,即使 Saxon 仍然作为应用程序中的 jar 库存在。