我在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之间是否存在一些冲突?
答案 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版本相匹配。