JasperReports无法在Grails 2.4上运行:无法初始化类net.sf.jasperreports.engine.xml.JRXmlDigesterFactory

时间:2014-08-01 10:02:52

标签: 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

这是我的代码

在控制器中

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 个答案:

答案 0 :(得分:1)

在2.4或更高版本中。你不能组合jasper插件,因为它缺少第三部分的库。

解决这个问题非常容易。您只需要将这些罐子复制到您的/盖子

  • org.apache.commons.collections.jar
  • 公地BeanUtils的-1.9.2.jar

确保100%工作:-)

答案 1 :(得分:0)

在版本2.4中删除了Holder静态类。对于仍然使用这些类的插件,它们会导致错误。我也会尝试使用版本2.4.2而不是咧嘴笑。您是否也可以编辑并提供完整的堆栈跟踪以帮助调试。