我到了
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
错误,我误解了这个错误超过一个月。我已经尝试了所有可用的Digester版本,并且还在类路径中检查了重复的JAR。
我通过iReport-5.6.0
设计了报告,并使用了JAR
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
答案 0 :(得分:7)
如果抛出NoClassDefFoundError
,你应该检查所需的jar是否在类路径中正确加载,或者你是混合版本和类名可能是不同的(或它的行为)。
检查你要添加的Digester罐子是否是需要的。
检查这些罐子是否正确装载:
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)。