我正在研究一個簡單的獨立桌面應用程序,它將根據傳遞給程序的值生成報告。沒有數據庫使用。我設計我的JasperReports報告與iReport的設計師,並添加參數ID_NO
,並表達$P{ID_NO}
使用JasperReports API在代碼中得到了'java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory'API
的文本字段我可以成功預覽報表,看看我的預期。但我不能從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或任何類型的報告生成器。
編輯:
添加所有的庫從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.
和一個小的彈出窗口中說,文檔中沒有頁面。出現一個小窗口,沒有報告。
當你運行這段代碼時會發生什麼?它是否編譯?它是否會拋出異常?如果是這樣,什麼是堆棧跟蹤?你在框架中看到什麼東西嗎?什麼? –
對不完整的問題抱歉。最後幾行缺少,編輯過一會兒你會看到 – shababhsiddique