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 com.gu.config.XMLConfigBuilder.parseConfig(XMLConfigBuilder.java:33)
at com.gu.sqlSession.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:17)
at com.gu.test.IPersistenceTest.test(IPersistenceTest.java:17)
Caused by: java.lang.ClassNotFoundException: org.jaxen.JaxenException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
原因:dom4j依赖于Jaxen,需要添加jaxen包依赖。
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
</dependency>
扩展:出问题的创建XPath部分,Jaxen支持Xpath
1.XPath 是一门在 XML 文档中查找信息的语言, 用于在 XML 文档中通过元素和属性进行导航。(XPath)
2.Jaxen是一个开源的XPath库,适应多种不同的对象模型,包括DOM,XOM,dom4j和JDOM。也可以作为适配器,转换Java字节代码或XML的Java bean为xml。(jaxen)