Search code examples
javajasper-reports

Jasper report not working in other computer/system


I have developed an application using Java on Netbeans 8.2 IDE, in which I have used jasper report. My main jasper report has two sub reports to it.

I converted the .jar file into .exe file (added all the library files)using the Jar2Exe application.

Issue: When I run the .exe file on another system only the reports are not working..the error message display is as below..

Error msg: "net.sf.jasperreports.engine.jrexception:resource not found at : C:\project1\secure\report1 subreport.jasper"


Solution

  • In master report change <subreportExpression><![CDATA["report1_subreport1.jasper"]]></subreportExpression> on:

    <subreportExpression><![CDATA["secure/report1_subreport1.jasper"]]</subreportExpression> 
    

    It means that the main report will reference subreport using full package path. And make sure that you don't have SUBREPORT_DIR parameter set.


    If it still does not work then you can pass subreport to main report from Java using input stream:

    InputStream subReport1 = getClass().getResourceAsStream("/secure/report1_subreport1.jasper");
    parameters.put("SUBREPORT1", subReport1);
    

    In main Jasper report you will use this expressin:

    <subreportExpression class="java.io.InputStream"><![CDATA[$P{SUBREPORT1}]]></subreportExpression>
    

    And don't forget to declare the SUBREPORT1 parameter for the main report:

    <parameter name="SUBREPORT1" class="java.io.InputStream" isForPrompting="false">
      <defaultValueExpression><![CDATA[]]></defaultValueExpression>
    </parameter>