gpt4 book ai didi

java - Tomcat下加载一个jrxml文件

转载 作者:行者123 更新时间:2023-11-28 23:38:43 24 4
gpt4 key购买 nike

我有一个使用 JasperReports 将数据导出到 Excel、PDF 和 CSV 的网络应用程序。这是一个使用 DynamicJasperReports 插件的 grails 应用程序,它使用 jrxml 文件作为报告模板。

这是可行的,但在对我们的 tomcat 配置进行了一些更改后出现了故障。它仍然在本地以 grails 开发模式工作。

FastReportBuilder drb = new FastReportBuilder()
drb.setTemplateFile("resources/reportTemplate.jrxml")

DynamicReport report = reportBuilder.call(drb)

JRDataSource ds = new JRMapCollectionDataSource(data)

JasperPrint jp = DynamicJasperHelper.generateJasperPrint(report, new ClassicLayoutManager(), ds)
ReportWriter reportWriter = ReportWriterFactory.getInstance().getReportWriter(jp, format, [:])
reportWriter.writeTo(response)

它抛出这个错误:

java.lang.NullPointerException
at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperDesign(DynamicJasperHelper.java:151)
at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:448)
at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperPrint(DynamicJasperHelper.java:234)
at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperPrint(DynamicJasperHelper.java:187)
at com.giivpro.services.analytics.JasperReportsService.runReport(JasperReportsService.groovy:30)

最佳答案

我最终意识到这并不是因为我最初认为的升级到 tomcat7,而是因为大约在同一时间对应用程序的部署方式进行了更改。

应用程序的所有 jar 文件依赖项现在都复制到/var/lib/tomcat/lib 而不是部署在 war 文件中。这意味着 DynamicJasperHelper 中的行

URL url = DynamicJasperHelper.class.getClassLoader().getResource(dr.getTemplateFileName());

现在由于 ClassLoader 的安全限制而失败。/var/lib/tomcat/lib 中的 jar 由单独的 ClassLoader 加载,无法从特定的 WAR 文件加载资源。

关于java - Tomcat下加载一个jrxml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com