首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态报表导出pdf类未找到异常错误

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

Stack Overflow用户
提问于 2019-12-23 12:22:20
回答 1查看 630关注 0票数 1

我试图使用动态报表开源库在java中实现动态报表。

我的pom.xml:

代码语言:javascript
运行
复制
<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代码:

代码语言:javascript
运行
复制
 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

此代码正在处理此错误:

代码语言:javascript
运行
复制
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

为什么动态报表模块没有这种依赖性?我是否应该增加或其他任何新的方法?下面是依赖项的输出:tree

代码语言:javascript
运行
复制
[INFO] Scanning for projects...
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building dynamicreport 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] Downloading: http://repo.maven.apache.org/maven2/com/lowagie/itext/2.1.7.js6/itext-2.1.7.js6.pom
[INFO] Downloading: http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/com/lowagie/itext/2.1.7.js6/itext-2.1.7.js6.pom
[INFO] Downloading: http://jaspersoft.jfrog.io/jaspersoft/jr-ce-releases/com/lowagie/itext/2.1.7.js6/itext-2.1.7.js6.pom
[WARNING] The POM for com.google.zxing:core:jar:3.3.3 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.434 s
[INFO] Finished at: 2019-12-26T11:23:22+05:30
[INFO] Final Memory: 11M/155M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project dynamicreport: Could not resolve dependencies for project com.sample:dynamicreport:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at net.sourceforge.dynamicreports:dynamicreports-core:jar:6.1.0 -> net.sf.jasperreports:jasperreports:jar:6.9.0 -> com.lowagie:itext:jar:2.1.7.js6: Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js6: Could not transfer artifact com.lowagie:itext:pom:2.1.7.js6 from/to jaspersoft-third-party (http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/): Access denied to http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/com/lowagie/itext/2.1.7.js6/itext-2.1.7.js6.pom. Error code 407, Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied.  ) -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-23 12:52:50

缺少依赖关系iText

您可能缺少了一个名为iText的依赖项,它是导出到PDF所需的。因此,编译器抛出一个NoClassDefFoundError,表示缺少以下类:com.lowagie.text.DocumentException

决议0:

重新导入您的maven项目 (mvn clean install)并确保依赖项iText或至少有一个名为com.lowagie.text.DocumentException的类在类路径中。

或者您可以使用来自的较新版本。这是基于贾斯珀报道版本6.5.1,该版本再次使用iText将报表导出到PDF。

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

代码语言:javascript
运行
复制
<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中。

另见:类似的NoClassDefFound错误问题

在通过清单/解决POM中的依赖项之后,通过建议的命令澄清和更新这个问题:

。。似乎有以下的根本原因。

问题似乎

当Maven试图从外部存储库解析或下载依赖关系时,存在一个与代理相关的访问错误 (HTTP status 407):

错误代码407,代理身份验证必需( ISA Server需要授权才能完成请求。拒绝对Web代理筛选器的访问。)

您的代理似乎支持一个代理,它可以阻止访问远程POM和/或下载JAR依赖项。有两种可能的解决办法:

解决方案1:设置Maven以使用代理

如何从代理后面访问Maven Repository上看到这个问题和答案。这将告诉您如何为与代理相关的配置编辑Maven settings.xml,以及如何设置CNTLM或Wagon轻量级 Maven扩展。

解决方案2:手动下载和安装缺失的依赖项

首先,从Jaspersoft的存储库(JFrog Artifactory)通过浏览器页面( itext-2.1.7.js6.jar )手动下载JAR文件

然后安装这个第三方的罐子到本地的Maven回购。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59455306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档