将临时路径指向 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");
我正在为我的 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");