Jasperreport 6.2 java.lang.StackOverflowError 使用子报表时

Jasperreport 6.2 java.lang.StackOverflowError when using subreport

在包含子报表的报表上使用 JasperReport 6.2.0 时,我得到了 java.lang.WhosebugError

    net.sf.jasperreports.engine.fill.JRFillSubreport.prepare(JRFillSubreport.java:886) 
net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:352) 
net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:421) 
net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:396) 
net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2028) 
...

服务器是openSuseLinux42.1,Tomcat7.0.53,Java是openjdk版本“1.8.0_72”,MariaDB数据库。

log4j.logger.org.apache.commons.javaflow=info 添加到 log4j.properties 中,正如我在某些网站上发现的那样,并没有解决问题。

我的路径中还有 commons-javaflow-20060411.jar 库。

使用 JasperReport 6.3.0 进行测试引发了

net.sf.jasperreports.engine.JRRuntimeException: 
java.lang.NoSuchMethodError: 
org.apache.commons.javaflow.Continuation.suspend()Ljava/lang/Object;

...

使用 Jasperreport 5.x 版本时不存在问题。

我在具有相同库版本、java 版本、代码版本等的各种服务器上进行了完全相同的安装...(Linux 服务器,克隆磁盘安装),但只有 3 个17台服务器有问题...

在另一台服务器上刷新的相同数据库没有出现问题...很奇怪...就像它与硬件相关,但它不是因为有些具有相同的硬件并且一个工作而另一个不工作。

最后我使用 Jasperreports 6.1.1 版本解决了这个问题。已在所有服务器上解决。

http://netcologne.dl.sourceforge.net/project/jasperreports/jasperreports/JasperReports%206.1.1/jasperreports-javaflow-6.1.1.jar http://netcologne.dl.sourceforge.net/project/jasperreports/jasperreports/JasperReports%206.1.1/jasperreports-fonts-6.1.1.jar http://jaist.dl.sourceforge.net/project/jasperreports/jasperreports/JasperReports%206.1.1/jasperreports-6.1.1.jar

更新: 感谢@dada67 的建议,我升级到 6.3.0 版时没有包含 jasperreports-javaflow-x.y.z.jar(并从 6.1.1 版中删除了所有 3 个文件),现在一切正常。

所以解决方案是删除 jasperreports-javaflow-x.y.z.jar