无法从Jar文件中调用jasper报告

时间:2014-09-15 07:21:52

标签: java jasper-reports

我使用以下代码调用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并运行它时,我没有获得报告弹出窗口。

1 个答案:

答案 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"));