Jasper reports Jasper Java编译NoClassFound异常

Jasper reports Jasper Java编译NoClassFound异常,jasper-reports,noclassdeffounderror,Jasper Reports,Noclassdeffounderror,尽管之前有人问过这个问题,但我不能用它们来解决这个问题。 我目前正在尝试使用jasper报告生成pdf文件。但是, 我总是遇到一个与jar依赖项相关的异常。尽管如此,我还是将以下jars文件添加到构建路径中 jasperreports-6.0.4.jar commons-logging-1.2.jar commons-beanutils-1.9.2.jar jasperreports-javaflow-6.0.4.jar commons.digester3-3.2.jar commons-co

尽管之前有人问过这个问题,但我不能用它们来解决这个问题。 我目前正在尝试使用jasper报告生成pdf文件。但是, 我总是遇到一个与jar依赖项相关的异常。尽管如此,我还是将以下jars文件添加到构建路径中

  • jasperreports-6.0.4.jar
  • commons-logging-1.2.jar
  • commons-beanutils-1.9.2.jar
  • jasperreports-javaflow-6.0.4.jar
  • commons.digester3-3.2.jar
  • commons-collections4-4.0.jar
程序生成与集合相关的me类未找到异常。我的主要目标是通过使用jrxml文件生成pdf。我正在使用iReport 5.6.0生成jrxml文件。感谢您的帮助。错误的堆栈跟踪如下所示

Generating PDF...
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ReferenceMap
    at net.sf.jasperreports.engine.component.ComponentsEnvironment.<init>(ComponentsEnvironment.java:57)
    at net.sf.jasperreports.engine.component.ComponentsEnvironment.getInstance(ComponentsEnvironment.java:86)
    at net.sf.jasperreports.engine.xml.JRReportSaxParserFactory.getSchemaLocations(JRReportSaxParserFactory.java:99)
    at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.configureParser(BaseSaxParserFactory.java:162)
    at net.sf.jasperreports.engine.xml.BaseSaxParserFactory.createParser(BaseSaxParserFactory.java:117)
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createParser(JRXmlDigesterFactory.java:1572)
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(JRXmlDigesterFactory.java:1541)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:263)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:219)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:194)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:185)
    at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:288)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:575)
    at com.tutorialsdojo.jasper.HelloJasper.main(HelloJasper.java:13)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.ReferenceMap
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 14 more
正在生成PDF。。。
线程“main”java.lang.NoClassDefFoundError中出现异常:org/apache/commons/collections/map/ReferenceMap
位于net.sf.jasperreports.engine.component.ComponentsEnvironment.(ComponentsEnvironment.java:57)
位于net.sf.jasperreports.engine.component.ComponentsEnvironment.getInstance(ComponentsEnvironment.java:86)
位于net.sf.jasperreports.engine.xml.JRReportSaxParserFactory.getSchemaLocations(JRReportSaxParserFactory.java:99)
位于net.sf.jasperreports.engine.xml.BaseSaxParserFactory.configureParser(BaseSaxParserFactory.java:162)
位于net.sf.jasperreports.engine.xml.BaseSaxParserFactory.createParser(BaseSaxParserFactory.java:117)
位于net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createParser(JRXmlDigesterFactory.java:1572)
位于net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(JRXmlDigesterFactory.java:1541)
在net.sf.jasperreports.engine.xml.jrmmlloader.load(jrmmlloader.java:263)上
在net.sf.jasperreports.engine.xml.jrmmlloader.load(jrmmlloader.java:219)
在net.sf.jasperreports.engine.xml.jrmmlloader.load(jrmmlloader.java:194)
在net.sf.jasperreports.engine.xml.jrmmlloader.load(jrmmlloader.java:185)上
位于net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:288)
在net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:575)
位于com.tutorialsdojo.jasper.HelloJasper.main(HelloJasper.java:13)
原因:java.lang.ClassNotFoundException:org.apache.commons.collections.map.ReferenceMap
在java.net.URLClassLoader$1.run(URLClassLoader.java:372)
在java.net.URLClassLoader$1.run(URLClassLoader.java:361)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:360)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 14多

我设法解决了这个问题,我想分享答案,以帮助社区。可以通过pom.xml收集jar依赖项。但是,简单的方法依赖于安装的iReport(jrxml生成的版本)文件夹。Jaspersoft\iReport-x.x.x\iReport\modules\ext(取决于操作系统)位置中有一个文件夹。您可以从那里获得以下jar文件

  • jasperreportsXX.jar
  • commons-loggingXX.jar
  • commons-beanutilsXX.jar
  • commons.digesterXX.jar
  • commons-collectionsXX.jar
  • iTextXX.jar
  • jtd-compilerXX.jar
  • groovy-allXX.jar
然后所有的问题都消失了。希望这对其他遇到问题的用户有所帮助


注意。

根据本教程编译jrxml对我很有用


请注意,我的所有依赖项都由maven管理

您需要运行commons collections 3.2.1版。很可能是[这篇文章][1]。[1]: