如何为jasper报告设置相对类路径

时间:2013-04-16 07:27:27

标签: java swing netbeans jasper-reports

我正在从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

但没有人在这场戏中帮忙。

1 个答案:

答案 0 :(得分:2)

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

在应用程序旁边创建jaspersimagesstyles等文件夹。并创建如下所示的system/environment变量。

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

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

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