[英]Error -java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
[英]Got 'java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory` in code using JasperReports API
我正在開發一個簡單的獨立桌面應用程序,它將根據傳遞給程序的值生成報告。 沒有數據庫使用。 我已經使用iReport設計器設計了我的JasperReports報告,並添加了參數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或任何類型的報告生成器。
編輯:
將jasperreports4.xx / lib / ..中的所有庫文件添加到項目中。 現在異常消失了。 現在控制台說 -
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
一個小彈出窗口說文檔中沒有頁面。 出現一個小窗口,其中沒有報告。
您的異常與參數問題無關,顯然看起來很好。
看起來您在類路徑中缺少Apache Commons Logging。 它以預覽模式運行,因為您的IDE確實具有正確的類路徑。
是啊,沒錯。 "The document has no pages"
表示數據源中沒有記錄,因此不會生成報告。
即使報表中不存在數據,您也可以設置報表仍將顯示空白頁面的屬性。
當NO Data屬性允許您選擇不同的值和不同的顯示報表的方式,以防數據集返回零行或報表沒有要打印的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.