尝试打开jasper报告时,在java中从InputStream加载对象时出错

时间:2016-12-27 15:51:32

标签: java jasper-reports

我有一个子报告,我在主jasper报告中使用过,我使用InputStream从java表单发送子报告,这是代码:

InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper");

在主报告中,我创建了一个类为InputStream的参数,并接受我使用hashmap传递的java表单中的值。 我的问题是,当只有一页时,一切正常,但只要有一页以上,我就会收到这个错误:

error in loading object from input stream

这是我的碧玉代码

<parameter name="subrepopath" class="java.io.InputStream" isForPrompting="false"/>

2 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,最近才感谢this post找到了解决方案。

您需要做的是将子报表类型更改为Object:

<parameter name="subrepopath" class="java.lang.Object" isForPrompting="false"/>

在SubReport属性中,将Expression类设置为:

net.sf.jasperreports.engine.JasperReport

Changing report type

在您的代码中,您需要将对象加载到JasperReport对象中,这是我与链接页面的区别methods used are deprecated

所以你会这样做:

InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper");
JasperReport subJasperReport = (JasperReport)JRLoader.loadObject(suprepo);

然后使用subJasperReport键在参数地图中添加对象subrepopath,您将发现现在可以正确生成多页报告。

答案 1 :(得分:0)

我遇到了同样的问题,它是由与其他版本的 Jasper 报告编译的子报告 (.jasper) 引起的。