当报表中包含同一子报表的两个实例时,Jaspersoft Server崩溃

时间:2015-05-21 14:33:38

标签: jasper-reports jasperserver subreport

我已经与Jasper Studio合作了几个星期,并构建了一些看起来非常好并且在预览模式下完美运行的报告(其中一些包括子报告)。 现在我想在JasperServer上部署它们,这就是我遇到问题的地方。 我设法用简单的报告和两次子报告重现它。

在这个示例报告中,这个想法很简单:我有: - 一个带有一个参数的子报表 - 包含此子报表的两个实例的主报表,并将它们作为参数传递给两个不同的值。

结果: - 当我只包含子报表的一个实例时,它完美地工作 - 当我包含它两次(参数值无关紧要)时,jasperserver上的执行崩溃并出现以下错误:

填写报告时出错 net.sf.jasperreports.engine.JRException:找不到资源:tests / srvtest / footersub.jasper

我使用"发布"部署报告和其子报告。 Jasper Studio中的按钮。 我不认为这是一个子报告路径问题,因为只有一个实例,它没问题。仅当我在主报表中放置2个或更多子报表实例时服务器崩溃...

如果我对参数值进行硬编码或者从主报告的参数中传输它,它就不会改变行为。

你有什么想法吗?

我在Windows 7上运行,使用Jasper服务器v.6.0.1和JasperStudio 6.0.4

非常感谢你的帮助,

尼科

以下是子报表和报表的源文件。两者都是独立的,它们可以在没有数据源的情况下运行。 主要报告:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.0.4.final using JasperReports Library version 6.0.4  -->
<!-- 2015-05-21T16:21:32 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="rpt" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ef29a4c5-cefe-4c49-8626-ec7341c9cbab">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="agora_oracle"/>
    <property name="ireport.jasperserver.url" value="http://localhost:8585/jasperserver/"/>
    <property name="ireport.jasperserver.user" value="joeuser|jasperadmin"/>
    <property name="ireport.jasperserver.report.resource" value="/reports/Tests/rpt_files/main_jrxml"/>
    <property name="ireport.jasperserver.reportUnit" value="/reports/Tests/rpt"/>
    <parameter name="sub1" class="java.lang.String">
        <defaultValueExpression><![CDATA["sub 1"]]></defaultValueExpression>
    </parameter>
    <parameter name="sub2" class="java.lang.String">
        <defaultValueExpression><![CDATA["sub 2"]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[Select * from mgusers]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="30" splitType="Stretch">
            <staticText>
                <reportElement x="156" y="0" width="243" height="30" uuid="86f84720-da73-442d-84d3-2c04ea97483a"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="18"/>
                </textElement>
                <text><![CDATA[Rapport de test]]></text>
            </staticText>
        </band>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <pageFooter>
        <band height="180" splitType="Stretch">
            <subreport runToBottom="true">
                <reportElement x="0" y="12" width="555" height="28" uuid="890bcdb4-97e8-465a-bee5-a9ef52bc136b"/>
                <subreportParameter name="nom">
                    <subreportParameterExpression><![CDATA[$P{sub1}]]></subreportParameterExpression>
                </subreportParameter>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["tests/srvtest/footersub.jasper"]]></subreportExpression>
            </subreport>
            <subreport runToBottom="true">
                <reportElement x="1" y="43" width="555" height="28" uuid="2fdad4ca-5e84-4533-b808-0b95d10aae68"/>
                <subreportParameter name="nom">
                    <subreportParameterExpression><![CDATA[$P{sub2}]]></subreportParameterExpression>
                </subreportParameter>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["tests/srvtest/footersub.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </pageFooter>
</jasperReport>

子报告:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.0.4.final using JasperReports Library version 6.0.4  -->
<!-- 2015-05-21T16:19:46 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="footersub" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="094a5941-d53b-4f31-a776-a68a3800223c">
    <parameter name="nom" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["Mon nom"]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <summary>
        <band height="21">
            <textField>
                <reportElement x="150" y="1" width="235" height="20" uuid="b73f03fe-439f-4d1f-b301-8d0f9fa7a799"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA["Footer " + $P{nom}]]></textFieldExpression>
            </textField>
        </band>
    </summary>
</jasperReport>

1 个答案:

答案 0 :(得分:0)

那很臭。试试这个。 在将报告上传到服务器之前,请单击JSS底部的源选项卡。

将每个子报告引用更改为[CDATA [&#34; repo:footersub.jrxml&#34;]]

我创建了一个报告并使用现有的子报告来准确完成您尝试对这些更改执行的操作,但我的报告是主报告中的实际资源。

可能是您无法从仓库中的其他位置两次引用子报表。我会尝试下一步。