Tomcat运行dom4j包出现类加载失败异常原因

通过maven方式开发web项目,用到了dom4j读取xml文件,项目运行时出现以下异常:

Caused by: java.lang.NoClassDefFoundError: org/dom4j/DocumentException
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2499)
    at java.lang.Class.getDeclaredFields(Class.java:1811)
    at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
    at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:139)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5419)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1722)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1573)
    ... 20 more

分析可能是tomcat容器没有加载到dom4j包导致,将dom4j.jar复制到Tomcat/lib文件夹下,再次编译运行,可以正常读取xml文件,

或者将jar包复制到WEB-INF/lib文件夹下并加载类,也可以正常读取xml文件

2021-04-21 更新:

后来发现是Artifact打包后没有包含lib文件,可以删除原Artifact,然后重新配置生成Artifact即可包含lib文件夹,然后可以包含所有的jar包

 


版权声明:本文为yzy85原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。