【问题标题】:Pointing Temp path to different directory in JasperReports for compiling reports将临时路径指向 JasperReports 中的不同目录以编译报告
【发布时间】:2016-12-14 23:00:40
【问题描述】:

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

我想将该路径指向其他目录,例如 /home/tomcat,我已尝试在报告的 .jrxml 中使用以下属性

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

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

【问题讨论】:

  • but still its not working - 你是什么意思?您使用的是什么版本的 JasperReports 库?
  • 我正在使用 jasperreports-6.1.0.jar
  • 在 Eclipse 中,我也尝试了相同的代码,但仍然无法正常工作,java 代码中是否有任何东西可以在我的类中编写并执行所需的操作。你想让我分享 .jrxml 文件吗?
  • but still its not working 是什么意思?你的期望是什么?
  • 嗨,Alex,我希望 jasper 应该使用我指定的路径内存来生成“.tmp”文件,而不是默认路径(即 unix 中的“/tmp”)内存.因为我的“/tmp”目录没有足够的空间来存储临时文件,因此不会生成报告。

标签: java jasper-reports


【解决方案1】:

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

因此,您必须在 jasperreports.properties 文件中设置属性(如果有)或通过 net.sf.jasperreports.engine.DefaultJasperReportsContext.setProperty() 以编程方式设置它。

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

【讨论】:

  • 嗨,我正在尝试通过程序设置它,但它不起作用,下面是代码 -> DefaultJasperReportsContext reportsContext=DefaultJasperReportsContext.getInstance(); reportsContext.setProperty(JRPropertiesUtil.PROPERTY_PREFIX+".compiler.temp.dir", "./D:/Files");
  • 使用 JRCompiler.COMPILER_TEMP_DIR 作为属性名(或 JRPropertiesUtil.PROPERTY_PREFIX+‌​"compiler.temp.dir"‌​)作为属性名。还要验证 ./D:/Files 是否在您的系统上正确解析,这对我来说有点奇怪。
【解决方案2】:

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

在我们的应用程序中通过代码设置System属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2012-08-28
    • 2011-01-09
    相关资源
    最近更新 更多