Jasper报告在Java应用程序中首次加载时间过长

Jasper报告在Java应用程序中首次加载时间过长,java,jasper-reports,Java,Jasper Reports,我在java应用程序中使用jasper报表生成发票和GRN,我使用以下类填充数据 public class IReport extends JFrame { public IReport(String filename,HashMap parameter){ super("View Report"); try { DefaultJasperReportsContext context = DefaultJasperReport

我在java应用程序中使用jasper报表生成发票和GRN,我使用以下类填充数据

public class IReport extends JFrame {

    public IReport(String filename,HashMap parameter){

        super("View Report");
        try {
             DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();
            JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",
    "net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
            JasperPrint print = JasperFillManager.fillReport(filename, parameter, DatabaseService.getConnection());

            JRViewer viewer = new JRViewer(print);

            Container c = getContentPane();
            c.add(viewer);


        } catch (Exception ex) {
            ex.printStackTrace();
        }

        setExtendedState(MAXIMIZED_BOTH); 
        toFront();

        setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    }

}
我使用以下方法通过单击按钮解析必要的参数来调用报告

private void printReport(String grnno) {
        HashMap param = new HashMap();
        param.put("grnno", grnno);
        param.put("header1", dilukz_inventory.DILUKZ_INVENTORY.owner.getHeader1());
        param.put("header2", dilukz_inventory.DILUKZ_INVENTORY.owner.getHeader2());
        param.put("address", dilukz_inventory.DILUKZ_INVENTORY.owner.getAddress());
        param.put("telephone", dilukz_inventory.DILUKZ_INVENTORY.owner.getContactno());

        IReport showme = new IReport("Reports/GRN.jasper", param);       
        showme.setVisible(true);

    }
但问题是,当我在打开应用程序后第一次这样做时,加载报告所需的时间太长,就像需要20-30秒一样。我能做些什么来避免这种情况?请建议我离开