Jasper Report给出了java.lang.ExceptionInInitializerError

时间:2015-09-20 13:19:40

标签: java jasper-reports

我使用Jasper报告ireport进行了报告。它在我的笔记本电脑上成功生成。但是当我将相同的jar文件部署到其他计算机然后生成报告时,它将给出错误:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
 at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXMLoader.java:248)

我把与jasper相关的所有jar文件放在我放在笔记本电脑上的同一位置。但它给出了同样的错误。

代码:

public class JasperReport {
    public void generateReport(int invoiceNumber, String fileName) {
        Connection connection = null;
        try {
            connection = ConnectDB.openConnection();
            net.sf.jasperreports.engine.JasperReport jasperReport;
            try (InputStream inputStream = this.getClass().getResourceAsStream("report1_1.jrxml")) {
                System.out.println("Hello "+JasperReport.class.getResource("report1_1.jrxml").getFile().toString());
                JasperDesign jasperDesign = JRXmlLoader.load(inputStream);
                jasperReport = JasperCompileManager.compileReport(jasperDesign);
            }
           Map<String, Object> map = new HashMap<String, Object>();
           map.put("invoiceNumber", invoiceNumber);
           JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map, connection);

           File fileReportName = new File(fileName);
           OutputStream outputStream = new FileOutputStream(fileReportName);
           JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
           outputStream.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            Logger.getLogger(JasperReport.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
                ConnectDB.closeConnection();
            }

    }

        public static void generateStockReport(String fileName) {
        try {
            String userName = "root";
        String password = "pass";
        String url = "jdbc:mysql://127.0.0.1:3306/JindalEnterprises";
        Class.forName ("com.mysql.jdbc.Driver").newInstance ();
        Connection connection = (Connection) DriverManager.getConnection ( url, userName , password );

            String workingDir = System.getProperty("user.dir");
            workingDir=workingDir+"/src/com/jindal/reports/report1_1.jrxml";
          classPath=report.getClass().getResource("JasperReport.class").getPath();
            System.out.println(workingDir);
            InputStream inputStream = new FileInputStream(new File(workingDir));
            JasperDesign jasperDesign = JRXmlLoader.load(inputStream);
            net.sf.jasperreports.engine.JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            inputStream.close();
           JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, connection);

           File fileReportName = new File(fileName);
           OutputStream outputStream = new FileOutputStream(fileReportName);
           JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
           outputStream.close();
        } catch (Exception ex) {
            Logger.getLogger(JasperReport.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

0 个答案:

没有答案