笔者想学习用dom4j来生成和解析xml文件,在本地文件夹里写了一个java程序,然后将dom4j的jar包放在{JAVA_HOME}\jre\lib\ext目录下,用javac编译了该文件,正常,但是用java命令运行时,报了错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentHelper
at TestXML.<init>(TestXML.java:13)
at TestXML.main(TestXML.java:42)
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentHelper
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
java代码如下:
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileWriter;
import java.io.File;
public class TestXML{
public TestXML(){
try{
boolean rtn = false;
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("root");
rootElement.addComment("这里是根节点root");
Element childElement1 = rootElement.addElement("child1");
childElement1.addAttribute("tilte","childTitle");
childElement1.addAttribute("publisher","childPublisher");
Element childElement2 = childElement1.addElement("child2");
childElement2.addAttribute("level","Intermediate");
childElement2.addAttribute("date","July-2006");
Element titleElement = childElement2.addElement("title");
titleElement.setText("Dom4j create xml schema");
Element authorElement = childElement2.addElement("author");
Element firstNameElement = authorElement.addElement("firstname");
firstNameElement.setText("xiaoyu");
Element lastNameElement = authorElement.addElement("lastname");
lastNameElement.setText("li");
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileWriter(new File("E:\\test.xml")),format);
writer.write(document);
writer.close();
rtn = true;
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
new TestXML();
}
}
这是java安装目录下的两个文件夹,JAVA_HOME配置为D:\Program Files\Java\jdk1.6.0_10,首先将生成xml文件的类编译,编译时出现错误:
很明显,这是由于没有引入第三方类库造成的,现在将dom4j的jar包拷贝至JAVA_HOME\jre\lib\ext下,再次编译,正常通过。使用java命令运行,就出现如下错误
很明显,运行时没有找到第三方类库的包,所以报错,将dom4j的包复制到D:\Program Files\Java\jre6\lib\ext下,运行程序,OK!
所以对于jdk安装目录下的两个文件夹,jdk和jre,jdk用于开发环境,应该包括程序的编译,如果程序中包含第三方类库,可直接将第三方jar包复制到扩展目录下。而jre用于运行环境,如果程序中包含第三方类库,要运行程序,将第三方jar包复制至扩展目录下,在类加载时,会自动加载该目录下的类库。
转载于:https://blog.51cto.com/feidandelion/477977