私はJDomの初心者です。私はxmlファイルにアクセスするためにXPathを使用しようとしています。私のコードは次のようなものです:JDom with 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を追加します.2つの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;
を必要とされていないときに、CLASSPATHのENVのVARを使用していませんclasspathにjarを追加すると、javaコマンドに-cpフラグを使って追加することになります。 –
ありがとう、私はこのコマンドを入力しました:java -cp ../jaxen-1.1.1.jar:../dom4j-1.6.1.jar :. xmlTohtml、それはまだ例外をスローします... – Michael
あなたはクラスパスでdom4jを持っていますが、あなたのコードでjdomを使っています。クラスパス全体を見せるのに役立つかもしれません。 –