我使用以下代码调用jasper报告
String reportSource = "/report.jrxml";
InputStream is = getClass().getResourceAsStream(reportSource);
JasperReport jasperReport = (JasperReport) JasperCompileManager.compileReport(is);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
JasperViewer.viewReport(jasperPrint);
当我在netbeans ide中运行时,代码工作正常。但是当我构建应用程序并创建jar并运行它时,我没有获得报告弹出窗口。
答案 0 :(得分:0)
请勿将getClass().getResource("report.jrxml")
的结果转换为String
,而是要使用getClass().getResourceAsStream("report.jrxml")
并将其传递给JasperCompileManager.compileReport(InputStream)
try (InputStream is = getClass().getResourceAsStream("report.jrxml")) {
JasperReport jr = JasperCompileManager.compileReport(is);
}
说了这么多,你不应该在运行时部署或编译你的.jrxml
文件。
作为构建过程的一部分,您应该将.jrxml
文件编译为.japser
文件,并在运行时加载和填充它们。
try (InputStream is = getClass().getResourceAsStream("report.jrxml")) {
JasperReport report = (JasperReport)JRLoader.loadObject(is);
}
这样你就省去了每次浪费运行时编译报告的麻烦......
ps,你也可以使用......
JasperReport report = (JasperReport)JRLoader.loadObject(getClass().getResource("report.jrxml"));