JDom работает с XPath - PullRequest
       23

JDom работает с XPath

3 голосов
/ 14 августа 2011

Я новичок в JDom, я пытаюсь использовать XPath для доступа к моему XML-файлу. Мой код выглядит следующим образом:

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

Я что-то здесь упустил? Любая помощь будет принята с благодарностью!

Я добавляю jaxen и dom4j в мой файл .cshrc, который находится непосредственно в моем домашнем каталоге, и два файла 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;

Ответы [ 3 ]

9 голосов
/ 14 августа 2011

Включить dom4j.jar и jaxen.jar в classpath.

2 голосов
/ 14 августа 2011

Я подозреваю, что у вас нет jaxen-1.1.3.jar на пути к классам.Если бы я предположил, что вы запускаете это из командной строки, вы бы хотели:

java -cp jaxen-1.1.3.jar:. myJavaProgram
0 голосов
/ 27 февраля 2013

Достаточно jaxen1.1.3 и dom4j не требуется

...