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

使用Groovy 1.8.1编译从iReport 4.1.3创建的JasperReport 4.1.3时出错,groovy,jasper-reports,Groovy,Jasper Reports,我使用的是64位Windows7,使用的是JDK1.6.0ī、Groovy1.8.1和JasperReports/iReport4.1.3 我的类路径中有来自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-201010

我使用的是64位Windows7,使用的是JDK1.6.0ī、Groovy1.8.1和JasperReports/iReport4.1.3

我的类路径中有来自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(stacktrace中的JRGovyCompiler)和我用来编译报告的groovy之间是否存在冲突?

为了解决这个问题,我必须做一些更改

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


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

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

我们的项目使用的一个依赖库的版本似乎有问题,与groovy的版本冲突


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

可能您应该尝试另一个groovy版本。JR 4.1.3正在使用pom.xml中的groovy 1.7.5依赖项:org.codehaus.groovy groovy所有1.7.5编译为真,我将尝试看看这是否有效。但这将是一个问题,因为我无法在我的服务器环境中安装另一个版本的groovy。谢谢。我在改成groovy 1.7.5后也有同样的表现。好主意,好办法。顺便说一下,“删除语言参数”与“将语言从‘Groovy’更改为‘Java’”是一样的。