【问题标题】:Why do I get Exception java.lang.NoClassDefFoundError org/codehaus/groovy/? [duplicate]为什么我会收到异常 java.lang.NoClassDefFoundError org/codehaus/groovy/? [复制]
【发布时间】:2012-08-02 08:29:38
【问题描述】:

我刚刚尝试了 Jasper Report,我正在学习 this site 的教程

我还下载了示例源,然后运行它并没有出现错误。但是当我使用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

这是我显示报告的按钮操作(这只是示例,报告只包含一个带有参数的文本: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的版本不同还是其他原因?

【问题讨论】:

标签: java groovy jasper-reports


【解决方案1】:

或者,您可以更改 .jrxml 文件,查找

language="groovy"

并将其更改为

language="java"

【讨论】:

    【解决方案2】:

    可能是版本不匹配。 如果您想知道您需要哪个版本的 Groovy,您可以查看 Jasper 的 Maven 存储库:

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

    从这里您可以看到 Jasper 4.6.0

    需要 Groovy 1.7.5

    【讨论】:

    • 谢谢!这对我有用。我使用 Jasper 5.6.0 并获得了 Groovy 1.7.5 但在检查 mvnrepository 后我意识到并更改为 Groovy 2.0.1。
    【解决方案3】:

    您需要使用 CallSiteArray 类的附加 Jar 包。

    http://groovy.codehaus.org/Download

    【讨论】:

    • 我已经下载了新的Groovy,它可以工作了,谢谢
    【解决方案4】:

    我在使用 Jasper iReport Tool 5.6.0 时遇到了同样的问题,我的语言是 Java,我将正确的 jasper 报告库降级为 iReport Tool 5.1.0,它的工作原理就像一个魅力......希望状态保持不变所以..

    【讨论】:

      【解决方案5】:

      无需更改库,如果是 Ireport 5.X 版本,您可以在主报告属性的语言部分更改它,只需从 groovy 更改为 java,报告不会出现任何错误。

      【讨论】:

        【解决方案6】:

        简单的答案

        步骤:

        1 选择您的根文件夹,即来自 Report Inspector 的 report1.jsxml (Windows->报告检查器) 2 转到属性标签并点击语言标签然后选择JAVA

        编译并预览您的应用程序已启动...

        对 subReports Also...

        【讨论】:

          猜你喜欢
          • 2015-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-25
          相关资源
          最近更新 更多