我是JDom的新手,我嘗試使用XPath訪問我的xml文件。我的代碼如下:JDom使用XPath
public static void main(String[] args) throws Exception {
Document doc = new SAXBuilder().build("file.xml");
XPath x = XPath.newInstance("xpath");
//select the first element in the nodeset
Element elem = (Element)x.selectSingleNode(doc);
......
}
我已經導入了org.jdom.xpath.XPath類。當我使用javac編譯類,它沒有給出任何錯誤,但是當我嘗試運行程序,它提供了以下異常消息:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.jdom.xpath.XPath.newInstance(XPath.java:134)
at myclassname.main(xmlTohtml.java:18)
Caused by: java.lang.ClassNotFoundException: org.jaxen.NamespaceContext
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
... 4 more
我錯過了這裏的東西嗎?任何幫助將不勝感激!
我在我的.cshrc文件中添加了jaxen和dom4j,該文件直接位於我的主目錄下,並且這兩個jar文件也位於同一個目錄中。
setenv CLASSPATH ${CLASSPATH}:/homedirectory/jaxen-1.1.1.jar
setenv CLASSPATH ${CLASSPATH}:/homedirectory/dom4j-1.6.1.jar
當我嘗試在命令行命令,它會生成新的異常....
Exception in thread "main" java.lang.NoClassDefFoundError: :
Caused by: java.lang.ClassNotFoundException: :
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
順便說一句,在我的程序導入的類有:
import java.util.Iterator;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.Namespace;
import org.jdom.xpath.XPath;
dom4j中不使用CLASSPATH的環境變量,當他們比如將jar包括在類路徑中,這意味着使用-cp標誌將它添加到java命令中。 –
謝謝,我輸入了這個命令:java -cp ../jaxen-1.1.1.jar:../dom4j-1.6.1.jar :. xmlTohtml,它仍然會拋出異常... – Michael
這很奇怪你在類路徑中有dom4j,但是在你的代碼中使用了jdom。也許這會有助於向我們展示整個類路徑。 –