Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JasperReports:Can';定位子报告_Java_Spring_Jasper Reports_Ireport - Fatal编程技术网

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 . 谢谢,伙计。我也有同样的问题,我解决了。你真的帮了我