7

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

また、サンプルソースをダウンロードして実行しても、エラーは発生しませんでした。しかし、を使用して独自のレポートを作成する場合は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ですか?

4

6 に答える 6

18

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

language="groovy"

そしてそれをに変更します

language="java"
于 2013-11-23T13:39:00.360 に答える
8

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

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

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

于 2012-08-02T08:43:25.070 に答える
4

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

http://groovy.codehaus.org/Download

于 2012-08-02T08:33:39.387 に答える
0

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

于 2015-07-03T08:15:57.247 に答える
0

Jasper iReport Tool 5.6.0を使用しているときに同じ問題が発生しました.Javaとしての言語があり、適切なジャスパーレポートライブラリがiReport Tool 5.1.0にダウングレードされ、魅力的に機能しました...ステータスがそのままであることを願っています..

于 2015-02-02T09:56:21.793 に答える
0

簡単な答え

手順:

1 Report Inspector (Windows- >Report Inspector ) からルート フォルダー、つまり report1.jsxml を選択します。 2 [ Properties] タブに移動し、[ Language] タブをクリックして、[JAVA] を選択します。

アプリケーションのコンパイルとプレビューが開始されました...

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

于 2017-06-23T09:38:10.133 に答える