gpt4 book ai didi

java - 报告打包成JAR后编译报错

转载 作者:行者123 更新时间:2023-11-30 08:33:50 25 4
gpt4 key购买 nike

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

为了创建此报告,我使用了生成这些 .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

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

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

最佳答案

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

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

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

关于java - 报告打包成JAR后编译报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com