web-dev-qa-db-ja.com

例外Java.lang.NoClassDefFoundErrororg / codehaus / groovy /が発生するのはなぜですか?

Jasper Reportを試してみましたが、 このサイト のチュートリアルに従っています。

また、サンプルソースをダウンロードして実行したところ、エラーは発生しませんでした。しかし、iReportを使用して独自のレポートを作成する場合は、それをコンパイルして、.jasperファイルをプロジェクトに追加します。プログラムを実行すると、exceptionがあります。

Exception in thread "AWT-EventQueue-0" Java.lang.NoClassDefFoundError: org/codehaus/groovy/runtime/callsite/CallSiteArray
    at report2_1343895135169_749208.$createCallSiteArray(calculator_report2_1343895135169_749208)
    at report2_1343895135169_749208.$getCallSiteArray(calculator_report2_1343895135169_749208)
    at report2_1343895135169_749208.<init>(calculator_report2_1343895135169_749208)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:39)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:27)
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:513)
    at Java.lang.Class.newInstance0(Class.Java:355)
    at Java.lang.Class.newInstance(Class.Java:308)
    at net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.loadEvaluator(JRAbstractJavaCompiler.Java:112)
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.loadEvaluator(JRAbstractCompiler.Java:333)
    at net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.Java:265)
    at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.Java:457)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.Java:379)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.Java:88)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.Java:103)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.Java:61)
    at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.Java:153)
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.Java:82)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.Java:653)
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.Java:634)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.Java:956)
    at View.MainGUI.btnExportActionPerformed(MainGUI.Java:871)
    at View.MainGUI.access$800(MainGUI.Java:50)
    at View.MainGUI$10.actionPerformed(MainGUI.Java:541)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.Java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.Java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.Java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.Java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.Java:236)
    at Java.awt.Component.processMouseEvent(Component.Java:6267)
    at javax.swing.JComponent.processMouseEvent(JComponent.Java:3267)
    at Java.awt.Component.processEvent(Component.Java:6032)
    at Java.awt.Container.processEvent(Container.Java:2041)
    at Java.awt.Component.dispatchEventImpl(Component.Java:4630)
    at Java.awt.Container.dispatchEventImpl(Container.Java:2099)
    at Java.awt.Component.dispatchEvent(Component.Java:4460)
    at Java.awt.LightweightDispatcher.retargetMouseEvent(Container.Java:4577)
    at Java.awt.LightweightDispatcher.processMouseEvent(Container.Java:4238)
    at Java.awt.LightweightDispatcher.dispatchEvent(Container.Java:4168)
    at Java.awt.Container.dispatchEventImpl(Container.Java:2085)
    at Java.awt.Window.dispatchEventImpl(Window.Java:2478)
    at Java.awt.Component.dispatchEvent(Component.Java:4460)
    at Java.awt.EventQueue.dispatchEvent(EventQueue.Java:599)
    at Java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.Java:269)
    at Java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.Java:184)
    at Java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.Java:174)
    at Java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.Java:169)
    at Java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.Java:161)
    at Java.awt.EventDispatchThread.run(EventDispatchThread.Java:122)
Caused by: Java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.callsite.CallSiteArray
    at Java.lang.ClassLoader.findClass(ClassLoader.Java:359)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:307)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:248)
    ... 50 more

ここに、レポートを表示するためのボタンアクションがあります(これは単なるサンプルであり、レポートにはパラメーターが1つのテキストが含まれています:outputText):

Map params = new HashMap();
params.put("outputText", "Hello world");
try {
        JasperPrint printer = JasperFillManager.fillReport(getClass().getResourceAsStream("report2.jasper"), params, new JREmptyDataSource());
        JasperViewer jv = new JasperViewer(printer);
        jv.show();
    } catch (JRException ex) {
        ex.printStackTrace();
    }

dependencyの問題の場合は、必要なすべてのjarをプロジェクトにインポートしました。そのチュートリアルの.jasperファイルを使用しても、問題はありません。これは、iReportまたはそれ以外?

7
Fahmi Ramadhan

CallSiteArrayクラスを使用して追加のJarパッケージが必要です。

http://groovy.codehaus.org/Download

3
thanksnote

または、.jrxmlファイルを変更して、

language="groovy"

に変更します

language="Java"
17
Mathias Conradt

バージョンの不一致が原因である可能性があります。必要なGroovyのバージョンを知りたい場合は、JasperのMavenリポジトリを参照してください。

http://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports/4.6.

ここから、Jasper 4.6.0Groovy 1.7.5が必要であることがわかります。

8
jasop

簡単な答え

ステップ:

1 ルートフォルダを選択つまりレポートインスペクタからreport1.jsxml(Windows->レポートインスペクタ)2 プロパティに移動タブをクリックして- Language Tab then Select Java

開始したアプリケーションをコンパイルしてプレビューします...

サブレポートについても同じことを行います...

0
Ganesh Admane

Jasper iReport Tool 5.6.0を使用しているときに同じ問題が発生しました。Javaと同じ言語を使用していました。正しいjasperレポートライブラリをiReportTool 5.1.0にダウングレードすると、魅力のように機能しました...ステータスが変わらないことを願っています。

0
Technanny

ライブラリを変更する必要はありません。Ireport5.Xバージョンの場合、メインレポートプロパティの言語セクションで変更できます。groovyからJavaに変更するだけで、レポートにエラーは発生しません。 。

0
JavaDragon