尝试打开jasper报表时从java中的InputStream加载对象时出错

尝试打开jasper报表时从java中的InputStream加载对象时出错,java,jasper-reports,Java,Jasper Reports,我在主jasper报告中使用了一个子报告,我使用InputStream从java表单发送子报告,代码如下: InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper"); 在主报告中,我创建了一个参数,它的类是InputStream,并从java表单中接受我使用hashmap传递的值。 我的问题是,当只有一页时,一切正常,但一旦有超过一页,我就会收到此错误: error in loadin

我在主jasper报告中使用了一个子报告,我使用
InputStream
从java表单发送子报告,代码如下:

InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper");
在主报告中,我创建了一个参数,它的类是
InputStream
,并从java表单中接受我使用hashmap传递的值。 我的问题是,当只有一页时,一切正常,但一旦有超过一页,我就会收到此错误:

error in loading object from input stream
这是我的jasper代码

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

我也受到了这个问题的困扰,最近,多亏了

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

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

在代码中,需要将该对象加载到JasperReport对象中,这就是我与链接页面的不同之处

所以你会这样做:

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

然后在参数映射中添加对象
subcasperreport
,键为
subrepopath
,您会发现您的多页报告现在将正确生成。

我也有同样的问题,它是由子报告(.jasper)引起的使用其他版本的Jasper报表编译。

调试时显示的行上是否发生错误?该子报表是Jasper手册的一部分?@Milaci是的,它是我的主报表的一部分jasper@serge错误就在这条线上,我现在退出了,我不能尝试,但我认为你应该只调用一个主要报告,并把jasper的子报表的相对路径。
InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper");
JasperReport subJasperReport = (JasperReport)JRLoader.loadObject(suprepo);