#java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

#java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

我正在 java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester 错误,我被这个错误困扰了一个多月。我已经尝试了所有可用的 Digester 版本,并且我还在类路径中检查了重复的 JAR。

我通过 iReport-5.6.0 设计了报告,并且使用了来自 iReport-5.6.0\ireport\modules\ext 和其他必需的 JAR。

错误日志:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
    at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:108)
    at net.sf.dynamicreports.examples.JasperMongoDBConnection.main(JasperMongoDBConnection.java:30)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Digester
    at java.net.URLClassLoader.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at sun.misc.Launcher$ExtClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

如果抛出 NoClassDefFoundError 你应该检查所需的 jar 是否正确加载到 class 路径中,或者你可能正在混合版本并且 class 名称可能不同(或者它是行为)。 检查您要添加的 Digester 罐子是否是所需的罐子。

检查这些 jar 是否正确加载:

jasperreports-.jar;
jasperreports-javaflow.jar;
commons-beanutils.jar;
commons-collections.jar;
commons-logging.jar;
commons-digester.jar

查看您的 eclipse 实例下的 jasper 报告插件文件夹。在此文件夹中搜索 commons digester jar 并将相同的 jar(以及列出的其他 jar)复制到您的项目中。