首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

dom4j selectNodes 拋出 NoClassDefFoundError: JaxenException 根因與修復

     編輯:Java 程式設計入門

使用 dom4j 解析 XML/GML 時調用 root.selectNodes("featureMember") 拋出:

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)
    ...

根因分析

dom4j 的 XPath 功能(selectNodes、selectSingleNode)依賴 Jaxen 庫作為 XPath 引擎。異常鏈顯示 ClassNotFoundException: org.jaxen.JaxenException,表明 classpath 缺少 jaxen.jar。

修復方案

  1. 下載 jaxen-1.1.6.jar(或與 dom4j 版本匹配的版本)。
  2. 將 JAR 放入項目 classpath:
    • Maven:<dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>1.1.6</version></dependency>
    • Gradle:implementation 'jaxen:jaxen:1.1.6'
    • 手動:放入 WEB-INF/lib 或模塊依賴庫。
  3. 重新部署/啟動應用。

驗證

再次執行 XPath 查詢,異常消失,節點列表正常返回。

避坑提示

  • dom4j 1.6.1+ 部分發布包已內嵌 Jaxen 類,但建議顯式聲明依賴,避免傳遞依賴衝突。
  • 若使用 dom4j:dom4j:2.x,Jaxen 為可選依賴,必須手動添加。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved