Я работаю над простым автономным настольным приложением, которое будет генерировать отчет на основе значений, переданных программе. Там нет использования базы данных. Я разработал свой отчет JasperReports с помощью дизайнера iReport и добавил параметр ID_NO
и текстовое поле с выражением $P{ID_NO}
Я могу успешно просмотреть отчет и посмотреть, что я ожидал. Но я не могу сгенерировать отчет из Java-приложения и передать оттуда параметр ID_NO
. Вот мой код:
public class MyReportViewer extends JFrame {
public MyReportViewer(String fileName) {
this(fileName,null);
}
public MyReportViewer(String fileName,HashMap<String, Object> parameter) {
super("View Report");
try {
JasperPrint print = JasperFillManager.fillReport(fileName, parameter);
JRViewer viewer = new JRViewer(print);
Container c = getContentPane();
c.add(viewer);
} catch(Exception e) {
e.printStackTrace();
}
setBounds(10, 10, 600,500);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main(String args[]) {
HashMap<String, Object> param = new HashMap<String, Object>();
param.put("ID_NO", "101-15-980");
MyReportViewer viewer = new MyReportViewer("test.jasper", param);
viewer.setVisible(true);
}
}
Код дает исключение
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at net.sf.jasperreports.engine.util.JRLoader.<clinit>(JRLoader.java:61)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:267)
at jspertest.MyReportViewer.<init>(MyReportViewer.java:37)
at jspertest.MyReportViewer.main(MyReportViewer.java:60)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
и не запускается.
Пожалуйста, дайте мне подсказку. Я никогда раньше не использовал JasperReports или какой-либо другой генератор отчетов.
Edit:
Добавлены все файлы библиотеки из jasperreports4.x.x / lib / .. в проект. Теперь исключение прошло. Теперь консоль говорит -
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
и небольшое всплывающее окно говорит, что в документе нет страниц. Появится небольшое окно без отчета.