net.sf.jasperreports.engine.JRException:找不到资源

时间:2014-05-21 13:46:08

标签: jasper-reports subreport

我尝试使用 JasperSoft Studio 使用子报表,但我在下面得到了例外。虽然它存在,但它找不到子报告文件。

net.sf.jasperreports.engine.JRException:Resource not found at: D:\\JASPERREPORTS\\MyReports

以下是主报告的配置

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<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="Blank_A4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="0a6d6643-1d79-4e5e-b39d-a773bba37c12">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="kai3_adapter"/>
    <queryString>
        <![CDATA[select * from cm_crew]]>
    </queryString>
    <field name="OID" class="java.math.BigDecimal"/>
    <field name="CREW_OID" class="java.lang.String"/>
    <field name="CONTACT_OID" class="java.math.BigDecimal"/>
    <field name="ACTIVE" class="java.lang.String"/>
    <field name="ONSHIFT" class="java.lang.String"/>
    <field name="SHIFT_ID" class="java.lang.String"/>
    <field name="SHIFT_START" class="java.sql.Timestamp"/>
    <field name="CREW_STATUS" class="java.lang.String"/>
    <group name="CREW_OID">
        <groupExpression><![CDATA[$F{CREW_OID}]]></groupExpression>
    </group>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="141" height="20" uuid="fc7cf2eb-2922-42e3-b446-fa1cba3239d6"/>
                <text><![CDATA[CREW_OID]]></text>
            </staticText>
            <staticText>
                <reportElement x="141" y="0" width="138" height="20" uuid="1fb08aed-592e-437d-9c3c-87e763dc81f8"/>
                <text><![CDATA[ACTIVE]]></text>
            </staticText>
            <staticText>
                <reportElement x="279" y="0" width="138" height="20" uuid="76eaa47f-6f18-4210-a607-a6456b1cc4ed"/>
                <text><![CDATA[ONSHIFT]]></text>
            </staticText>
            <staticText>
                <reportElement x="417" y="0" width="138" height="20" uuid="273fca2c-2b50-4157-ab3b-8545d94855f3"/>
                <text><![CDATA[CREW_STATUS]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="257" splitType="Stretch">
            <textField>
                <reportElement x="0" y="13" width="141" height="20" uuid="ef3acaa1-b11a-4b3d-b90d-7da18fc15dfa"/>
                <textFieldExpression><![CDATA[$F{CREW_OID}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="141" y="13" width="138" height="20" uuid="2c29e96a-d712-4aff-9449-46f523ebbad8"/>
                <textFieldExpression><![CDATA[$F{ACTIVE}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="279" y="13" width="81" height="20" uuid="70df46c9-e63a-45a0-8c6e-82e38c260681"/>
                <textFieldExpression><![CDATA[$F{ONSHIFT}]]></textFieldExpression>
            </textField>
            <subreport>
                <reportElement x="380" y="20" width="165" height="170" uuid="3c312fc6-a389-4e46-af09-ddb1bfaa353f"/>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["D:\\JASPERREPORTS\\MyReports\\"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

3 个答案:

答案 0 :(得分:2)

按照Sharad的回答,如果它仍然没有生成文件(发生在我身上),你可以试试这个:

在预览报告之前,您可以先尝试编译它。如果打开jrxml文件(包含子报表的文件),您可能会在编辑器的上方栏中看到一个小图标(带有一些二进制字符串的小文件)。单击此按钮应生成您期望的文件。

我创建了一个新答案,因为我想添加一个显示按钮的图像:

Compile button @ Jaspersoft Studio 5.6

请注意,这也可能有效:使用&#34;项目&gt;清理包含报告的项目。清洁...&#34 ;.然后在&#34; Project Explorer&#34;中右键单击您的项目。 (通常在你的左边),然后点击&#34; Build Project&#34;。

答案 1 :(得分:1)

从调用报告的应用程序发送"SUBREPORT_DIR"参数。 例如,在Java中:

params.put("SUBREPORT_DIR", "reports/folder/");

只需指向目录,而不是文件。

如果您使用Maven,请在pom.xml

中正确设置Maven资源代码

答案 2 :(得分:0)

尝试在子报表路径中提供子报表名称,如下所示: -

 "D:\\JASPERREPORTS\\MyReports\\subreport.jasper"

即使.jasper文件不存在,只需给出subreport.jasper它会自动编译subreport.jrxml文件并生成.jasper文件。