我有一个嵌入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?
然而,对于主报告编译,我的答案是不够的。在编译时有一条错误消息说缺少子报告(这就是为什么我认为可能需要默认值表达式?)
非常感谢!
答案 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)不应该是一个大问题。