Search code examples
javaswingjasper-reports

JasperReports: JRViewer causes exception to be added in container in JInternalFrame


I have created a swing application. I have created a report with iReport 5.6.0. Now whenever I call the report and tried to add the report in JInternalFrame it throws exception. I am sharing my code bellow.

Report Viewer

public class MyReportViewer extends JInternalFrame {
    public MyReportViewer(String fileName){
        this(fileName, null);
    }

    public MyReportViewer(String fileName, HashMap parameter) {
        super("View Report",true,true,true,true);
        try {
            DB_Con db = new DB_Con();

            JasperPrint  print = JasperFillManager.fillReport(fileName,parameter,db.con);
            java.util.List list = print.getPages();

            if(!(list.isEmpty())) {
                JRViewer viewer = new JRViewer(print);

                Container contentPane = super.getContentPane();
                contentPane.removeAll();
                contentPane.add(viewer);

                int sW =(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
                int sH = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()-50;

                setBounds(0,0,sW,sH);
                setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            } else {
                BOptionPane.showMessageDialog(null,
                        BOptionPane.REPORT_MESSAGE,
                        BOptionPane.ERROR_TITLE,
                        BOptionPane.ERROR_ICON);
            }
        }catch(JRException jre){
            jre.printStackTrace();
        }
    }
}

Main Frame

public class frmMenu extends JFrame {
    public frmMenu(){
        initComponents();
    }

JDesktopPane dPane = new JDesktopPane();

//---- itemAllSizeInfo ----
                    itemAllSizeInfo.setText("All Size List");
                    itemAllSizeInfo.setFont(new Font("Rupali", Font.BOLD, 14));
                    itemAllSizeInfo.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent e) {
                            MyReportViewer sizeInfo = new MyReportViewer(".\\Report\\All_Size_List.jasper");
                            dPane.add(sizeInfo);
                            sizeInfo.setVisible(true);
                        }
                    });

The Exception:

Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256) at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256) at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256) at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256) at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256) at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256) at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256) at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256) at net.sf.jasperreports.view.JRViewer$23.getRenderersCache(JRViewer.java:2256)

Can anyone help to find out to overcome the problem. I am using iReport 5.6.0 and JDK 1.7.0 version


Solution

  • This was a bug on the Jasper. Just use the last version.