Java JasperReports:Can';定位子报告
这让我发疯。。上个小时,我试图弄明白为什么我的报告在添加子报告后立即停止工作。。 我已经检查并尝试了所有类似的问题。 没有成功。。子报表肯定在同一目录中。。 定义如下:Java JasperReports:Can';定位子报告,java,spring,jasper-reports,ireport,Java,Spring,Jasper Reports,Ireport,这让我发疯。。上个小时,我试图弄明白为什么我的报告在添加子报告后立即停止工作。。 我已经检查并尝试了所有类似的问题。 没有成功。。子报表肯定在同一目录中。。 定义如下: <subreport isUsingCache="false"> <reportElement uuid="db816b3c-a13d-440f-a6a2-f899762e61e4" x="0" y="89" width="555" height="100"/>
<subreport isUsingCache="false">
<reportElement uuid="db816b3c-a13d-440f-a6a2-f899762e61e4" x="0" y="89" width="555" height="100"/>
<subreportParameter name="footerAddress">
<subreportParameterExpression><![CDATA[$P{footerAddress}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="footerManager">
<subreportParameterExpression><![CDATA[$P{footerManager}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="footerContact">
<subreportParameterExpression><![CDATA[$P{footerContact}]]></subreportParameterExpression>
</subreportParameter>
<subreportParameter name="footerBank">
<subreportParameterExpression><![CDATA[$P{footerBank}]]></subreportParameterExpression>
</subreportParameter>
<subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{SUBREPORT_DIR}]]></subreportExpression>
</subreport>
其中$p{SUBREPORT\u DIR}是“/valid/path/sub.report.jasper”
我仍然收到一个错误:在/valid/path/sub.report.jasper中找不到资源
为什么???我之前有过这个问题。
我的方法是-我在一个参数(比如folder\u path)中发送绝对文件夹。然后在子报表表达式中,我使用了
新文件($P{folder\u path}+“*.jasper”)
这个*.jasper文件可以被“\\inner\u folder\\*.jasper”
替换。
这很好地工作了这种情况不时发生在我身上,平台操作系统一直是决定某些代码工作,而另一些代码不工作的关键因素。然而,一直起作用的是相对引用,而不是绝对引用
如果cjava的解决方案不起作用,我的建议是找出JasperReports在磁盘上做了什么。根据您的平台,*nix,Windows,您可能需要找出JasperReports正在运行的系统调用,以找到它正在使用的路径。在我的应用程序中,我发现,即使我指定了一个无路径引用,它仍然起作用以前,一些平台的路径搜索方式会有所不同,但无法找到报告
有关如何排除系统调用故障的其他一些问题:
*尼克斯-斯特拉斯
Windows进程监视器
Mac-dtrus
祝你好运。在第一条消息中,作者说:
其中,$p{SUBREPORT\u DIR}
是“/valid/path/sub.report.jasper
”
$p{SUBREPORT_DIR}
是目录,但不是文件名。这是第一个错误
第二:有时候jasper找不到子报表,即使路径是正确的
解决这个问题的方法是:
将$P{SUBREPORT_DIR}
传递到main报告中(在本例中:“/valid/path/
”),将此参数放入一个HashMap
-标准方式将参数传递到jasper中
将$P{SUBREPORT_DIR}
从主报表传递到子报表作为参数:$P{SUBREPORT_DIR}
主报表->子报表的$P{SUBREPORT_DIR}
(存在子报表时使用此方法,从子报表调用)
在主报表中,将子报表的表达式设置为$P{subreport_DIR}
+“sub.report.jasper
”
尝试从代码发送子报表\u DIR参数。可能缺少该参数。。。
如果您使用maven,请检查pom.xml中的资源目录标记并进行比较
params.put("SUBREPORT_DIR", "reports/report/blablaFolder/");
这可能是*nix OS上的权限问题吗?@AlexK我不这么认为..我可以从同一个报表访问同一文件夹或内部文件夹中的图像..sub.report.jasper
-它是一个文件名,而不是文件夹吗?有时你必须更改主报表以使其重新编译并包含修改过的子报表。你尝试过吗?$P{subreport\u DIR}是一个目录,但不是文件名。这是第一个错误。
-是的,参数的名称错误(值不是文件夹名称)。但是您可以给出任何您想要的名称。为什么这是一个错误?我没有完全写出来。这是潜在的错误。Jasper search subreports in$P{SUBREPORT\u DIR}路径。因此,最好将此参数定义为目录。JR引擎不知道$P{SUBREPORT\u DIR}
,它不是内置参数。哇!你说得对。iReport在创建子报表时生成此参数。我经常使用它,甚至没有考虑它:)所以,我的宗教信仰是使用目录:),但这真的很有用。例如,我的第二项中描述了这一点message@lealceldeiro . 谢谢,伙计。我也有同样的问题,我解决了。你真的帮了我