我正在嘗試使用XPathFactory來評估Java應用程序中的表達式。但是我得到了一個撒克遜特定的錯誤。有一段時間我使用撒克遜的一些功能,要做到這一點,我不得不設置一個系統屬性:XPathFactory不工作
System.setProperty("javax.xml.xpath.XPathFactory:" + NamespaceConstant.OBJECT_MODEL_SAXON,
"net.sf.saxon.xpath.XPathFactoryImpl");
XPathFactory xpf = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON);
不過,現在我只想使用默認的DOM做一些XML處理(org.w3c.dom中.Document)並用xpath進行處理,所以不需要撒克遜。但是,當我試圖創建的XPathFactory我仍然得到撒克遜錯誤消息:
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之前,這工作得很好)
你是否從類路徑中刪除了撒克遜? –
嗯,我不能。以後會需要其他的東西。我需要能夠選擇使用默認的XPathFactory,儘管Saxon仍然是應用程序中的jar庫。 – Anders