Ошибка при компиляции отчета после упаковки в JAR

67
7

поэтому я разработал эту программу на Java, используя Eclipse (jdk 1.8.0_74) в Windows 7, которую пользователь может в какой-то момент сгенерировать отчет с данными, поступающими из базы данных.

Чтобы создать этот отчет, я использовал TIBCO Jaspersoft Studio-6.3.0, который генерирует эти.jrxml и.jasper. Чтобы моя программа распознала эти файлы, я скопировал их в пакет отчетов.

Когда я бегу на Eclipse, все работает абсолютно нормально; отчет создается, способен печатать, все.

Теперь проблема: когда я экспортирую в runnable JAR (Export> Runnable JAR File> Извлечение необходимых библиотек в сгенерированный 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

Я не знаю, как это решить в основном потому, что я даже не знаю, что это за файл или где он создан.

Я был бы признателен за любую помощь, которую вы можете предоставить.

спросил(а) 2016-08-29T18:40:00+03:00 3 года, 10 месяцев назад
1
Решение
68

Решенный путем изменения для загрузки.jasper, который уже скомпилирован вместо.jrxml по следующему коду:

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

в

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

ответил(а) 2016-08-29T21:48:00+03:00 3 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема