【问题标题】:How to set relative classpath for jasper reports如何为 jasper 报告设置相对类路径
【发布时间】:2013-04-16 07:27:26
【问题描述】:

我正在从一个 Swing 应用程序创建一个 jasper 报告。当设置了绝对路径但没有为相对路径生成一个时,它工作正常。生成代码的java代码是

 JasperDesign jd= JRXmlLoader.load("relative path");

    String sql = "";
    JRDesignQuery newQuery= new JRDesignQuery();
    newQuery.setText(sql);
    jd.setQuery(newQuery);
    JasperReport JASP_REP= JasperCompileManager.compileReport(jd);
    JasperPrint JASP_PRINT= JasperFillManager.fillReport(JASP_REP,null,conn);
    JasperViewer.viewReport(JASP_PRINT,false);

当我尝试使用绝对路径时,会出现错误。数据源的 xml 代码是

<defaultValueExpression >
        <![CDATA["reports/report1.jasper"]]>
    </defaultValueExpression>

但它显示以下错误

java.io.FileNotFoundException: reports/report1.jasper (The system cannot find the path specified)

我收到了一些建议

http://forums.devshed.com/java-help-9/relative-path-for-subreport-in-jasperreport-309313.html

但在这个场景中没有任何帮助。

【问题讨论】:

  • 你的 jrxml 文件在哪里。
  • 添加示例作为评论

标签: java swing netbeans jasper-reports


【解决方案1】:

如果您正在使用Jasper Swing 应用程序,那么最佳做法是路径必须是绝对的。只需将所有.jrxml 文件编译为.jasper 文件并始终加载已编译的.jasper 文件。速度很快。

在应用程序之外创建文件夹,例如 jaspers、images、styles。并创建system/environment 变量,如下所示。

JASPERDIR = "c:\\app\\jaspers";
STYLES = "c:\\app\\styles";
IMAGES="c:\\app\images";

现在在你的swing应用中使用System.getenv()方法,传递变量名来读取路径。

这样您的挥杆应用程序每次都足够灵活。您可以随时更改 images、styles、.jasper 文件,而无需重新启动您的 Swing 应用程序。

【讨论】:

  • @Firefly....谢谢您的回复..您能否提供有关 System.getenv() 方法的更多详细信息(可能是 sn-p).. 创建了环境变量,我无法使用该方法访问它们
  • RightClick-MyComputer-properties-AdvanceTab-EnvironmentVariable。现在单击新建并将变量名称设置为JASPERDIR 并将变量值设置为"c:\\app\\jaspers";。现在最重要的是重新启动eclipse。编写一个简单的客户端类并在 main 方法中编写以下代码System.out.println(System.getenv("JASPERDIR"));
  • 谢谢 .... 它有助于理解我的代码的问题... !!我相信这会奏效..竖起大拇指..!!
  • 很高兴听到这个消息。如果您喜欢答案,请接受并投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多