【问题标题】:Error when compiling report after packaged into JAR打包成JAR后编译报表报错
【发布时间】:2016-08-29 15:40:06
【问题描述】:

所以我在 Windows 7 上使用 Eclipse (jdk 1.8.0_74) 在 Java 中开发了这个程序,用户可以在某个时候使用来自数据库的数据生成报告。

为了创建此报告,我使用了生成这些 .jrxml 和 .jasper 的 TIBCO Jaspersoft Studio-6.3.0。为了让我的程序识别这些文件,我将它们复制到一个报告包中。

当我在 Eclipse 上运行时,一切正常;报告已生成,可以打印,所有内容。

现在的问题:当我导出到可运行 JAR(导出 > 可运行 JAR 文件 > 将所需库提取到生成的 JAR 中)时,它根本不会生成;显示编译错误。

代码如下:

public final void gerarRelatorio() {
    if (dateChooser.getDate() == null) {
        JOptionPane.showMessageDialog(null, "Preencha o campo de data!");
    } else {
        try {
            JOptionPane.showMessageDialog(null, "Seu relatório será gerado...");

            JasperReport report = JasperCompileManager
                    .compileReport(getClass().getResourceAsStream("RelatorioAttr.jrxml"));

            if (new DAORelatorioImpl().preencherRelatorioATratar(dateChooser.getCalendar())
                    .isEmpty()) {
                JOptionPane.showMessageDialog(null,
                        "Nenhum dado foi encontrado para essa data!");
            } else {
                JasperPrint print = JasperFillManager.fillReport(report, null,
                        new JRBeanCollectionDataSource(new DAORelatorioImpl()
                                .preencherRelatorioATratar(dateChooser.getCalendar())));

                JOptionPane.showMessageDialog(null, "Relatório Gerado com Sucesso!");

                JasperViewer jv = new JasperViewer(print, false);
                jv.setVisible(true);
                jv.toFront();
            }

        } catch (HeadlessException | JRException e) {
            JOptionPane.showMessageDialog(rootPane, "Erro 1: " + e);
            e.printStackTrace();
        } catch (ConexaoException | DAOException ex) {
            JOptionPane.showMessageDialog(rootPane, "Erro 2: " + ex);
        }
    }
}

再次在 Eclipse 上运行时它工作得很好,但是当我尝试在已编译的 JAR 上使用时会发生此异常:

net.sf.jasperreports.engine.JRException: Error compiling report java source files: C:\Users\guilherme.brandao\workspace\RelatorioAttr_1472481426930_73428.java

我不知道如何解决这个问题,主要是因为我什至不知道这个文件是什么或它是在哪里创建的。

如果您能提供任何帮助,我将不胜感激。

【问题讨论】:

  • 请注意,除非您有在运行时修改报告的 Java 代码,否则没有必要将 .jrxml 文件编译为 .jasper 文件。您可以直接加载并填写 iReport 或 JasperSoft Reports 生成的.jasper 文件。这将减少生成报告所需的时间,并简化代码。

标签: java eclipse jar compiler-errors jasper-reports


【解决方案1】:

通过以下代码更改为加载已经编译的.jasper而不是.jrxml来解决:

JasperReport report = JasperCompileManager
            .compileReport(getClass().getResourceAsStream("RelatorioAttr.jrxml"));

InputStream jasperStream = getClass().getResourceAsStream("RelatorioAttr.jasper");
JasperReport report = (JasperReport) JRLoader.loadObject(jasperStream); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2016-08-27
    • 2019-12-02
    • 2016-07-12
    • 2021-11-08
    • 2014-01-29
    • 2023-04-11
    相关资源
    最近更新 更多