java - JasperReports 不适用于 Grails 2.4 : Could not initialize class net. sf.jasperreports.engine.xml.JRXmlDigesterFactory

标签 java grails groovy jasper-reports jasper-plugin

我正在使用 grails 版本 2.4.0 和 JasperReports 插件:1.9.0(也尝试过版本 jasper-1.10.0-SNAPSHOT),但是当我导出到 pdf 时出现错误。

当我第一次启动项目时,我运行导出报告并收到此消息

org.apache.commons.collections.map.ReferenceMap

之后,当我再次尝试时,它显示此错误。

Could not initialize class net.sf.jasperreports.engine.xml.JRXmlDigesterFactory

它似乎与 2.4.0 版本竞争,因为它可以在 2.2.4 上运行

这是我的代码

在 Controller 中

def results = new ArrayList()
        def reportFolder = "${grailsApplication.parentContext.getResource('reports').file.absolutePath}"
        def sep = System.getProperty('file.separator')
        def app = Applicant.get(2)
        results.add(
                first: app.firstName,
                middle: app?.middleInitial,
                last: app.lastName,
                ssn: app.ssn,
                workPhone: app.workPhone,
                homePhone: app.homePhone
        )
reportService.exportPDFReport("${reportFolder}${sep}aaa.jrxml", results, params, response)

服务中(注意服务名为:reportService)

def exportPDFReport(String reportPath, results, params, response) {
        def temp_file = File.createTempFile("jasperReport", ".pdf")
        def jrDataSource = new JRMapCollectionDataSource(results)
        JasperReport jReport = JasperCompileManager.compileReport(reportPath)
        JasperPrint print = JasperFillManager.fillReport(jReport, params, jrDataSource)
        JasperExportManager.exportReportToPdfFile(print, temp_file.absolutePath)
        response.setContentType("application/force-download")
        response.setHeader("Content-Transfer-Encoding", "binary")
        response.setHeader("Content-disposition", "attachment; filename=${jReport.name}.pdf")
        response.outputStream << temp_file.newInputStream()
        temp_file.deleteOnExit()
    }

有什么想法吗?

最佳答案

2.4 或更高版本。您无法组合 jasper 插件,因为它缺少第三方库。

解决这个问题很容易。您只需将这些 jar 复制到您的/lid

  • org.apache.commons.collections.jar
  • commons-beanutils-1.9.2.jar

当然100%有效:-)

关于java - JasperReports 不适用于 Grails 2.4 : Could not initialize class net. sf.jasperreports.engine.xml.JRXmlDigesterFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077694/

相关文章:

Java 7 NIO/JPathWatch 问题 - 在 Windows 中移动目录

javascript - Grails更改javascript文件时出错

ruby-on-rails - Groovy/Grails::Ruby/Rails::2011 框架状态

http - 使用 groovy 和数据发送 POST 已经进行了 URL 编码

java - 如何使用 JSR 223 保护脚本安全?

gradle - Groovy:多次声明字段属性

java - 如何使用 mockito 捕获特定类型的列表

java - JSP:不评估 EL 表达式

validation - belongsTo 在每个场景中的表现都不同

java - C for Java 程序员?