gpt4 book ai didi

java - 填写Jasper报告时找不到外部模板

转载 作者:行者123 更新时间:2023-12-01 14:57:02 25 4
gpt4 key购买 nike

Jasper 报表可以使用 .jrxml 文件中引用的外部模板和子报表,如下所示:

<template><![CDATA["repo:template.jrtx"]]></template>
<subreportExpression><![CDATA["repo:subreport.jrxml"]]></subreportExpression>

这在 Jasper 服务器上运行时效果很好,但是当从 Java 代码进程内启动时,它会返回如下错误:

net.sf.jasperreports.engine.JRException: Resource not found at : repo:template.jrxml at net.sf.jasperreports.repo.RepositoryUtil.getResourceFromLocation(RepositoryUtil.java:255) at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:208) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:329)

在 Jasper 设计器中,资源被添加到未存储在报表文件中的资源列表中。如何使用 RepositoryUtil 执行相同操作? IE。告诉RepositoryUtil用一些真实的位置替换“repo”?我使用的代码:

Connection conn = ... ;
String reportSource = "C:\\report.jrxml";
Map<String, Object> params = new HashMap<String, Object>();
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, conn);

最佳答案

这肯定是一个类路径问题

Jasper 尝试首先将资源作为绝对路径加载,然后通过应用程序类路径作为相对路径加载

您可以尝试处理模板和子报表的绝对路径,它应该可以工作

您还可以尝试使用 -cp "/path/to/resourceDir/*"将资源目录放入应用程序的类路径中

关于java - 填写Jasper报告时找不到外部模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14231578/

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