Jasper Java编译NoClassFound异常

kin*_*ech 7 jasper-reports noclassdeffounderror

尽管之前提出过这个问题,但我无法通过使用它们解决问题.我目前正在尝试使用jasper报告生成pdf文件.但是,我总是得到一个与jar依赖项相关的异常.尽管如此,我将以下jars文件添加到我的构建路径中,

  • JasperReports的-6.0.4.jar
  • 共享记录-1.2.jar
  • 公地的BeanUtils-1.9.2.jar
  • JasperReports的-javaflow-6.0.4.jar
  • commons.digester3-3.2.jar
  • 公地collections4-4.0.jar

程序生成类未找到的异常与集合相关.我的主要目标是通过使用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
Run Code Online (Sandbox Code Playgroud)

kin*_*ech 12

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

  • jasperreportsXX.jar
  • 公地loggingXX.jar
  • 公地beanutilsXX.jar
  • commons.digesterXX.jar
  • 公地collectionsXX.jar
  • iTextXX.jar
  • JTD-compilerXX.jar
  • Groovy的allXX.jar

然后所有问题都消失了.希望这有助于遇到问题的其他用户.

问候.