外部样式问题:在报告生成过程中从JasperReports的5.2.0升级到6.2.2版本导致StackOverflowError

时间:2016-12-09 05:55:33

标签: java jasper-reports

我们最近将JasperReports版本从5.2.0升级到6.2.2。之后,报告生成失败并出现以下堆栈溢出错误。

java.lang.StackOverflowError
at net.sf.jasperreports.engine.util.StyleResolver.getPadding(StyleResolver.java:1533) ~[jasperreports-javaflow-6.2.2.jar:6.2.2]
at net.sf.jasperreports.engine.base.JRBaseLineBox.getPadding(JRBaseLineBox.java:228) ~[jasperreports-javaflow-6.2.2.jar:6.2.2]
at net.sf.jasperreports.engine.util.StyleResolver.getPadding(StyleResolver.java:1541) ~[jasperreports-javaflow-6.2.2.jar:6.2.2]
at net.sf.jasperreports.engine.base.JRBaseLineBox.getPadding(JRBaseLineBox.java:228) ~[jasperreports-javaflow-6.2.2.jar:6.2.2]
at net.sf.jasperreports.engine.util.StyleResolver.getPadding(StyleResolver.java:1541) ~[jasperreports-javaflow-6.2.2.jar:6.2.2]
at net.sf.jasperreports.engine.base.JRBaseLineBox.getPadding(JRBaseLineBox.java:228) ~[jasperreports-javaflow-
..........................

经过一些研究后,我发现了以下有趣的细节。

我们在代码中定义了两个样式模板,一个在平台级别,另一个是项目特定的。

PlatformStyles.jrtx:

style name="genericTextStyle" vAlign="Middle" fontName="DejaVu Sans" fontSize="11"

ProjectStyles.jrtx:

style name="projectTextStyle" style="genericTextStyle" isDefault="true" fontName="SansSerif" fontSize="8"

以上代码(样式模板)在JasperReports 5.2.0的早期版本中按预期工作。运行报告时,相同的代码导致上述错误。

最后,我刚从ProjectStyles.jrtx文件中删除了isDefault="true",之后生成的报告没有任何错误。

即使我尝试使用最新版本的JasperReports 6.3.1,仍面临同样的问题!

这是JasperReports升级中的错误还是提供了一种新方法?

0 个答案:

没有答案