5

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

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

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

表达式类:java.lang.String

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

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

到目前为止我看到的最接近的问题和答案在这里

如何使用 Jasper 加载子报表资源?

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

非常感谢你!

4

2 回答 2

5

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

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

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

这是工作!

于 2012-12-14T10:42:59.950 回答
0

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

该解决方案使用弹簧,但用弹簧替换特定部件(FileSystemResourceLoader) Class.getResourceAsStream()应该不是太大的问题。

于 2012-11-12T07:21:28.713 回答