【问题标题】:Cannot find Subreport from jar file无法从 jar 文件中找到子报表
【发布时间】:2015-11-19 07:42:01
【问题描述】:

我已经通过 Netbeans 和 Jasper Report 完成了我的 java 项目。我将文件复制到另一台笔记本电脑并运行 jar 文件,但是当我从与子报告有关的 jar 文件运行报告时出现错误:

net.sf.jasperreports.engine.jrexception resource not found at ...path

它试图查看我开发程序和报告的子报告的原始路径。现在,由于我想将程序运行到另一台笔记本电脑上,所以我不再有那个路径了。该怎么办?如何将子报表设置为相对路径?我有这个子报表表达式:

$P{SUBREPORT_DIR} + "SubReport_Items.jasper"

请帮忙...

【问题讨论】:

    标签: jasper-reports subreport


    【解决方案1】:

    你可以在jasper报告中使用相对路径,这就是为什么你通常使用$P{SUBREPORT_DIR},因为$P{SUBREPORT_DIR}是参数,你的应用程序可以使用相对路径,然后将绝对路径传递给jasper 报告。

    java 代码示例

    File reportDir = new File("myReportDirRealtiveToApplication"); //relative path
    String absolutePath = reportDir.getAbsolutePath() + File.separator; //Convert to absolute
    
    Map<String, Object> paramMap = new HashMap<String, Object>();
    paramMap.put("SUBREPORT_DIR", absolutePath); //Pass as parameter
    

    将参数映射传递给您的导出/填充方法,下面是一个示例,您自然会使用您当前使用的任何内容....

    JasperFillManager.fillReportToFile(jasperFileName, paramMap, myConnection); //Fill the report
    

    【讨论】:

    • 嗨,Petter,感谢您的帮助。我只是java新手,我应该在“jasperFileName”中输入什么?那应该是我的主要 jasper 报告 (MainReport_Record.jasper) 的文件名吗?
    • fillReportToFile 只是一个例子来展示如何将参数传递给报表,它是 JasperFileManager 上的众多方法之一,找到您需要使用的正确方法,(生成 pdf、doc、ecc ) 然后检查 API 以了解您需要传递的内容(在这种情况下,它是 .jasper 的路径...)
    猜你喜欢
    • 1970-01-01
    • 2017-02-13
    • 2016-10-13
    • 2019-08-11
    • 2019-07-28
    • 2015-06-27
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多