私は、プログラムに渡された値に基づいてレポートを生成する単純なスタンドアロンデスクトップアプリケーションを開発中です。データベースの使用はありません。私はJasperReportsレポートをiReportデザイナーで設計し、パラメータID_NO
と式を含むテキストフィールドを追加しました。$P{ID_NO}
JasperReports APIを使用してコード内に 'java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory`があります
私はレポートを正常にプレビューでき、私が期待したものを見ることができます。しかし、私は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