将临时路径指向 JasperReports 中的不同目录以编译报告

Pointing Temp path to different directory in JasperReports for compiling reports

我正在为我的 JasperReports'(6.1.0 版本)项目和 Unix 系统中的 运行 制作一个可运行的 jar。默认情况下,JasperReports 引擎在 /tmp 目录中执行报告时会生成一个扩展名为 tmp 的文件。

我想将该路径定向到其他目录,如 /home/tomcat,我尝试在我的报告 .jrxml 中使用下面的 属性 14=]

<property name="net.sf.jasperreports.compiler.temp.dir" value="./home/tomcat"/>

但仍然无法正常工作 - 临时文件仍在 /tmp 文件夹中创建。

net.sf.jasperreports.compiler.temp.dir 属性 的配置参考将全局列为 属性 范围。也就是说只能全局配置,不能在报表级别设置。

因此,您必须在 jasperreports.properties 文件(如果有的话)中设置该属性,或者通过 net.sf.jasperreports.engine.DefaultJasperReportsContext.setProperty().

以编程方式设置它

但是,如果你想避免编译器临时文件的麻烦,你应该在你的应用程序的类路径中添加一个 ECJ jar(例如 this one)。使用 ECJ 编译器,报表编译不会产生任何临时文件。

经过一番研究,终于搞定了。我们只需更改应用程序 运行 配置中 -Djava.io.tmpdir 变量的值。
就像我的情况一样,我有一个 运行nable jar,所以命令是:
java -Djava.io.tmpdir="/your/tempPath" -jar YourJarFileName
或者我们可以通过
通过应用程序中的代码设置系统 属性 System.setProperty("java.io.tmpdir","your\tempPath");