java - 如何设置 jasper 报告的相对类路径

标签 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

但没有人在这个场景中提供帮助。

最佳答案

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

在应用程序外部创建诸如jaspersimagesstyles之类的文件夹。并创建system/environment变量,如下所示。

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

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

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

关于java - 如何设置 jasper 报告的相对类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16031148/

相关文章:

java - Eclipse Java 应用程序刚刚终止

java - Netbeans GUI 不显示对象

java - TwoWayView android 库如何设置边距(图像之间的间距)? setItemMargin() 不起作用

java - 如何检索放置在从媒体扫描中排除的文件夹中的视频缩略图

带有图标和可变字体的 Java 系统托盘 PopupMenu MenuItem

Java Swing 桌面应用程序示例 Controller 或管理器?

java - 我可以在不使用 rs2xml.jar 的情况下为 jTable 创建方法吗?

java - jdatechooser作为mysql查询中的参数

java - 将 fileChooserParams 中的 mime 类型转换为 Intent.setType 的正确格式

java - 将弹出菜单的选定项目添加到相同格式的文本字段中