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

#java.lang.NoClassDefFoundError:org/apache/commons/digester/digester,java,jasper-reports,classpath,noclassdeffounderror,Java,Jasper Reports,Classpath,Noclassdeffounderror,我越来越 java.lang.NoClassDefFoundError:org/apache/commons/digester/digester错误,我被这个错误困扰了一个多月。我已经尝试了所有可用的消化器版本,并且在类路径中检查了重复的jar 我通过iReport-5.6.0设计了报告,并使用了 iReport-5.6.0\iReport\modules\ext和其他必需的JAR 错误日志: Exception in thread "main" java.lang.NoClassDefFoun

我越来越
java.lang.NoClassDefFoundError:org/apache/commons/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$1.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是否正确加载到类路径中,或者您正在混合版本,并且类名可能不同(或者它的行为)。 检查您正在添加的消化罐是否是所需的消化罐

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

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

看看eclipse实例下的jasper report plugin文件夹。搜索此文件夹中的commons digester jar,并复制项目中的同一个jar(以及列出的其他jar)。

您的类路径中有吗?我也有同样的问题,我所做的只是将
commons digester
jar包含在我的类路径中。@FredericClose-是的,我的类路径中有digester。我的电脑中有2.1版classpath@Salah-是的,我已经添加了相同的,但不确定为什么会出现相同的问题,当我运行Eclipse时,eclispe中是否会出现任何问题。您可以添加热点标志-XX:+TraceClassLoading,以查看在运行代码时每个类是从哪个jar加载的。如果您看到该类是从非预期位置加载的,这可能就是问题所在。是的,我正在加载2.1版本的jar,我尝试打印类路径,其中包含Digester jar 2.1。您在哪里运行这个?如果它在某个服务器下,你检查过lib目录了吗?我在Eclipse中本地运行,我试图引用MAVEN存储库,但仍然面临相同的错误。有什么想法吗?@exodus-谢谢。这是因为jasperreports jar在不同的路径中被引用。当我尝试打印类路径时,它显示了我在构建路径中添加的确切路径,但在执行时它引用了Jre/lib/ext/jasperreport jar。去掉这个就好了。