如何将JasperReport子报告嵌入到jar中

时间:2012-11-10 14:28:40

标签: jasper-reports embed

我有一个嵌入jar的jasper(master)报告。报告来自java输入流。碧玉报告由iReport 3.7.0

制作

在此主报告中,有一些子报告。目前我必须使用

子报告表达式:$ P {SUBREPORT_DIR} +“\\ SubReport.jasper”

表达式类:java.lang.String

在iReport中使其有效。这意味着我将subReport.jasper存储在SUBREPORT_DIR文件夹中。

我的问题是,如何将这些子报告嵌入jar中,就像主报告一样?什么应该填写“默认值表达式”? (如果需要的话)

到目前为止,我见过的最接近的问题和答案就在这里

How to load subreport resources with Jasper?

然而,对于主报告编译,我的答案是不够的。在编译时有一条错误消息说缺少子报告(这就是为什么我认为可能需要默认值表达式?)

非常感谢!

2 个答案:

答案 0 :(得分:5)

例如: 我有报告和子报告,位于一些* .jar文件中。调用子报表我设置子报表表达式

getClass().getResource("/path/to/my/report/in/a/jar/subreport.jasper").openStream()

并选择子报告表达式类java.io.InputStream

它正在运作!

答案 1 :(得分:0)

我在另一个问题的answer中描述了一种可能的解决方案。问题不尽相同,但解决方案也解决了这个问题。

该解决方案使用spring,但用Class.getResourceAsStream()替换spring特定部分(FileSystemResourceLoader)不应该是一个大问题。