【发布时间】: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