编译使用Groovy 1.8.1从iReport 4.1.3创建的JasperReport 4.1.3时出错

时间:2011-11-05 00:30:32

标签: groovy jasper-reports

我在Windows 7 64位上使用JDK 1.6.0_29,groovy 1.8.1和JasperReports / iReport 4.1.3。

我的CLASSPATH中的JasperReports发行版中有以下jar:

commons-beanutils-1.8.0.jar,commons-collections-2.1.1.jar,commons-digester-1.7.jar,commons-logging-1.0.4.jar,jasperreports-4.1.3.jar,poi -3.7-20101029.jar

我还尝试在$ {JASPER_HOME} / lib发行版中添加所有jar,以防我错过了一些重要的jar。

jasper报告将由一个groovy脚本生成。我用iReport创建了一个非常简单的报告,它只包含标题中的一些静态文本。我能够在iReport中编译和查看报告。

当我尝试从脚本编译报告时:

def jasperReport = JasperCompileManager.compileReport("filename")

我收到以下错误:

Caught: java.lang.AbstractMethodError
java.lang.AbstractMethodError
    at net.sf.jasperreports.compilers.JRGroovyCompiler.compileUnits(JRGroovyCompiler.java:96)
    at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:188)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:212)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:145)
    at net.sf.jasperreports.engine.JasperCompileManager$compileReport.call(Unknown Source)
    at wis_validate_environment.run(wis_validate_environment.groovy:58)

JasperReports正在使用的groovy(来自堆栈跟踪的JRGroovyCompiler)和我用来编译报告的groovy之间是否存在一些冲突?

2 个答案:

答案 0 :(得分:1)

为了解决这个问题,我必须改变一些事情。

使用报告向导创建报告并使用默认设置在jasperReport标记中创建language =“groovy”参数。当我删除语言参数时,我不再获得上面提到的AbstractMethodError。

我还需要在我的类路径中添加jdt-compiler-3.1.1.jar。

答案 1 :(得分:1)

我发现问题在这里解释了:

http://www.mail-archive.com/user@ofbiz.apache.org/msg23404.html

我们项目使用的某个依赖库的版本似乎存在问题,与groovy相冲突。

简而言之,请使用groovy-all.jar或确保您的依赖项与您正在使用的groovy版本相匹配。