我们使用JasperReport 6.1.0,它对com.lowagie:itext:jar:2.1.7.js2有依赖关系。它看起来像iText 2.1.7有IP问题,并且iText要求所有用户使用需要商业许可证的最新版本。所以我们想购买iText许可证。现在iText最新版本是7.0.1。我试着做下面的步骤与最新的iText 7.0.1取代的JasperReport的iText 2.1.7:用最新的iText 7.0.1替换JasperReport iText 2.1.7
1.排除默认的iText 2.1.7依赖在pom.xml中
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.1.0</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
...
2.新增iText的罐中pom.xml的
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>barcodes</artifactId>
<version>7.0.1</version>
<!-- barcodes depends on kernel -->
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>font-asian</artifactId>
<version>7.0.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>forms</artifactId>
<version>7.0.1</version>
<!-- forms depends on kernel and layout -->
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>hyph</artifactId>
<version>7.0.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>7.0.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.0.1</version>
<!-- kernel depends on io -->
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.0.1</version>
<!-- layout depends on kernel -->
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdfa</artifactId>
<version>7.0.1</version>
<!-- pdfa depends on kernel -->
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>sign</artifactId>
<version>7.0.1</version>
<!-- sign depends on kernel, layout and forms -->
</dependency>
3.运行MVN和测试报告功能,我得到了以下错误:
2016-11-17 14:43:36,520 ERROR [c.i.c.d.DeferredOperationManager] [ Thread-49] Exception on Deferred Operation. Operation UUID: 2a647922-d6d0-450d-9b2d-4d97638ba03f. UI Error key:d9a16093-be20-4278-9f8b-93120c0a2231 - Error: java.lang.NoClassDefFoundError: com/lowagie/text/SplitCharacter
它看起来像Jasp erReport正在尝试查找名称空间为“com.lowagie ...”的旧iText类。 我试图解压缩新的iText 7.0.1 jar包,这些类位于包“com.itextpdf ...”中。
如何让JasperReport调用新的iText jar?
*“我怎样才能让JasperReport调用新的iText jar?”* - ***重写正在使用iText的JasperReport类!***严肃地说,你不想说你只是替换依赖一个版本的主要部分增加了5(2.1.7乘7.0.1),并期望所有东西都可以直接使用,对吗?不仅类的包已经改变,7.x API是完全重写的,兼容性被设计破坏以摆脱许多旧罪。 – mkl
有人在Jasper报告网站上提出了同样的问题:http://community.jaspersoft.com/questions/1035351/itext7-support。如果你看那个页面,看看它是否得到了维护Jasper Reports的人的回答,这可能会很有用。 –