1

NetBeans を使用しています。私は、引数として送信されたいくつかのデータを派手な形式で出力する単純なプロジェクトを持っています。これは、例外をスローするコードです。

        JasperDesign design =  JRXmlLoader.load("Certificate.jrxml");
        JasperReport report = JasperCompileManager.compileReport(design);
        JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), new ClientList(args).getClients());
        JPanel panel= new JRViewer(print);

これらの例外は、Jasper クラスが作成されるたびにスローされます。System.getProperty("java.class.path") も試してみましたが、「jasperreports-5.0.1.jar」ファイルが含まれています..何が間違っていますか? これらの例外は、コンパイル時にクラスが利用可能になるたびにスローされますが、実行時にはスローされません..しかし、jarはそこにあります!

リクエストされたスタックトレース:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

at certificado.Certificado.main(Certificado.java:31)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Digester

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at java.lang.ClassLoader.loadClass(ClassLoader.java:423)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

at java.lang.ClassLoader.loadClass(ClassLoader.java:356)

... 1 more

Java Result: 1
4

3 に答える 3

3

Jasper jar に対してコンパイルしても問題ありませんが、実行時にその jar には独自の依存関係があり、それらも含める必要があります。

スタックトレースによると、 Apache Commons Digesterが必要です。おそらく Maven を使用してビルドし、(できれば) Maven に一連の依存関係を解決してもらいます。Jar 検索エンジンを使用してこれらの依存関係を見つけることができますが、これらの jar の一致するバージョンを判断することはできません。

于 2013-02-06T12:54:23.687 に答える
1

あなたのライブラリ(Jasper?)は、別のライブラリに(実行時に)依存しているようです。つまり、実行時にクラスパスに他のJARが存在する必要があります。

欠落しているクラス名はorg/apache/commons/digester/Digesterです。したがって、不足しているライブラリはであると推測できますcommons-digester。ダイジェスターライブラリがクラスパスでも利用できることを確認してください。

于 2013-02-06T12:57:15.033 に答える
0

私は同じ問題に直面しています.commons-digester-2.0.jarを追加するだけで問題は解決します.

于 2014-08-02T04:55:36.827 に答える