我使用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);
}
}