您的位置:首页 > 编程语言 > Java开发

用dom4j解析xml 报java.lang.NoClassDefFoundError:org/jaxen/JaxenException

2013-04-21 17:48 295 查看

   

源码如下:

  import java.io.File;

 

  import java.util.List;

 

  import org.dom4j.Document;

 

  import org.dom4j.io.SAXReader;

 

  public class Test {

  public static void main(String args[]) {

  try {

  File f = new File("D:/data.xml");

  if (f.exists()) {

  SAXReader reader = new SAXReader();

  reader.setEncoding("UTF-8");

  Document document = reader.read(f);

  if (document == null) {

 
System.out.println("hehe");

  }else{

  System.out.println(document.content());

  <b>List list = document.selectNodes("//root/author");</b>

  System.out.println(list.size());

  }

  }else

  System.out.println("file not exist");

  }

  } catch (Exception e) {

  e.printStackTrace();

  }

 

 

  }

  }

 

 

  xml文件如下:

 

  <?xml version="1.0" encoding="UTF-8"?>

 

  <root name="max">

 

  <author name="James" location="UK">James Strachan</author>

 

  <author name="Bob" location="US">Bob McWhirter</author>

 

  </root>

 

 

  运行错误信息如下:

  [org.dom4j.tree.DefaultElement@7a84e4 [Element: <root attributes: [org.dom4j.tree.DefaultAttribute@1aaa14a [Attribute: name name value "max"]]/>]]

 

  java.lang.NoClassDefFoundError: org/jaxen/JaxenException

 

  at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)

 

  at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)

 

  at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)

 

  at test2.Test.main(Test.java:21)

 

  Exception in thread "main"

 

 

  错误出在List list = document.selectNodes("//root/author");这里,但我不知道为什么错
------解决方法--------------------------------------------------------

少包 jaxen.jar
------解决方法--------------------------------------------------------

同上,在dom4j的解压包lib目录下把jaxen.jar放到你的类路径里去

总结java.lang.NoClassDefFoundError可能有俩种:

1.java.lang.NoClassDefFoundError指向的"org/jaxen/JaxenException "这个字符串所指对象的类不存在

如不是自定义类的话,到 http://www.findjar.com 查找包含该信息的jar包并引入.

2.类的加载先后顺序有问题

如启动web   application的时候,类的加载是有一个先后顺序的,如果应该先加载的类在后面加载,别的类在调用时找不到它,那么也会报这个错.

其他 java.lang.NoClassDefFoundError 异常处理都可这样处理.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Web 异常 MySQL
相关文章推荐