动态报告导出pdf类未找到异常错误

问题描述 投票:0回答:1

我正在尝试使用动态报告开源库。

下面是我的pom.xml

<dependencies>
  <!-- https://mvnrepository.com/artifact/net.sourceforge.dynamicreports/dynamicreports-core -->
<dependency>
    <groupId>net.sourceforge.dynamicreports</groupId>
    <artifactId>dynamicreports-core</artifactId>
    <version>6.1.0</version>
</dependency>

下面是我的Java代码

 List<Employee> employeeList = new ArrayList<Employee>();
             employeeList.add(new Employee("1", "Selva"));
               report()//create new report design
                 .columns(
                    Columns.column("ID", "id", String.class),
                    Columns.column("Name", "name" , String.class) 
                  ) //adds columns
                 .setDataSource(employeeList)
                 .toPdf(new FileOutputStream(new File("D://selvapdf.pdf"))); //export report to pdf

此代码正在错误中解决

Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException
    at net.sf.dynamicreports.jasper.transformation.ExporterTransform.pdf(ExporterTransform.java:440)
    at net.sf.dynamicreports.jasper.transformation.ExporterTransform.transform(ExporterTransform.java:134)
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.export(JasperReportBuilder.java:891)
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toPdf(JasperReportBuilder.java:731)
    at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toPdf(JasperReportBuilder.java:720)
    at com.sample.dynamicreport.App.main(App.java:33)
Caused by: java.lang.ClassNotFoundException: com.lowagie.text.DocumentException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 6 more

为什么动态报表模块不具有此依赖性。是我应该添加还是任何其他新方法。任何帮助将不胜感激!!

java itext
1个回答
0
投票

缺少依赖项iText

可能您缺少称为iText的依赖项,导出到PDF时需要此依赖项。因此,编译器抛出NoClassDefFoundError并说缺少以下类:com.lowagie.text.DocumentException

解决方法

要么重新导入您的maven项目,并确保依赖项iText或至少一个名为com.lowagie.text.DocumentException的类在类路径中。

或者您可以使用较新版本 DynamicReport's GitHub repository。这基于Jasper Reports版本6.5.1,该版本再次使用iText将报告导出为PDF。

如果在iText的依赖项中搜索JasperReports 6.1.0 on Maven,则会发现:

<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>2.1.7.js6</version>
    <scope>compile</scope>
  <!-- lines omitted -->
</dependency>

此依赖性应与您的DynamicReports版本6.1.0一起使用。因此,您可以将其单独添加到您的POM

© www.soinside.com 2019 - 2024. All rights reserved.