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
またはそれ以外?
CallSiteArrayクラスを使用して追加のJarパッケージが必要です。
または、.jrxmlファイルを変更して、
language="groovy"
に変更します
language="Java"
バージョンの不一致が原因である可能性があります。必要なGroovyのバージョンを知りたい場合は、JasperのMavenリポジトリを参照してください。
http://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports/4.6.
ここから、Jasper 4.6.0にGroovy 1.7.5が必要であることがわかります。
簡単な答え
ステップ:
1 ルートフォルダを選択つまりレポートインスペクタからreport1.jsxml(Windows->レポートインスペクタ)2 プロパティに移動タブをクリックして- Language Tab then Select Java
開始したアプリケーションをコンパイルしてプレビューします...
サブレポートについても同じことを行います...
Jasper iReport Tool 5.6.0を使用しているときに同じ問題が発生しました。Javaと同じ言語を使用していました。正しいjasperレポートライブラリをiReportTool 5.1.0にダウングレードすると、魅力のように機能しました...ステータスが変わらないことを願っています。
ライブラリを変更する必要はありません。Ireport5.Xバージョンの場合、メインレポートプロパティの言語セクションで変更できます。groovyからJavaに変更するだけで、レポートにエラーは発生しません。 。