저는 JDom의 초보자입니다. XPath를 사용하여 XML 파일에 액세스하려고합니다. 내 코드는 다음과 같습니다 :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 클래스를 가져 왔습니다.
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
내가 여기서 뭔가를 놓친 건가 : 나는이 프로그램을 실행하려고 할 때이 클래스를 컴파일 javac의를 사용하는 경우,이 오류를 포기하지 않았다, 그러나, 다음과 같은 예외 메시지를 제공? 어떤 도움이라도 대단히 감사하겠습니다!
내 홈 디렉토리 바로 아래에있는 .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;
을하지 않아도, 때이 classpath에 jar 파일을 포함 시키면 -cp 플래그를 사용하여 java 명령에 추가된다는 것을 의미합니다. –
고마워, 나는이 명령을 입력했다 : java -cp ../jaxen-1.1.1.jar : ../dom4j-1.6.1.jar :. xmlTohtml, 여전히 예외를 throw합니다 ... – Michael
클래스 패스에 dom4j가 있지만 코드에서 jdom을 사용하는 것은 매우 이상합니다. 어쩌면 전체 클래스 패스를 보여줄 수 있습니다. –