Apache FOP返回PDF生成代码1

时间:2016-04-12 16:15:13

标签: java pdf apache-fop

我正在尝试使用最新版本的Apache FOP来生成PDF。但是,在执行此操作时,我收到返回代码的错误。由于某种原因,它现在正在返回" 1"而不是" 0"关于流程执行。

ProcessBuilder processBuilder = new ProcessBuilder(commandWords);
processBuilder.directory(fopFolder);
processBuilder.redirectErrorStream(true);
StringBuilder outputBuilder = new StringBuilder();
Process process = processBuilder.start();
exitCode = process.waitFor(); //Should return 0, actually returns 1

我传递的命令词是......

path -jar fop.jar -c configPath -fo {null} -pdf outputPath

或视情况而定......

path -Xms256m -Xmx{maxmemory} -jar fop.jar -c configFile -fo {null} -pdf outputPath

我还设法在以后发现这个错误,我怀疑这可能是原因。如果我找到自己的解决方案,我会在以后根据需要添加答案。

  

VM初始化期间发生错误   初始堆大小设置为大于最大堆大小的值

对此主题的任何建议表示赞赏,如果您需要其他信息,我也很乐意更新我的问题,因为我不能100%确定调试此问题需要哪些信息。

  • Java版本:8
  • Apache FOP:2.1

2 个答案:

答案 0 :(得分:0)

这个问题看起来更像是一般的Java配置问题,而不是特定的FOP问题:

  

初始化VM初始堆大小设置为大于最大堆大小的值

时发生错误

这意味着使用SELECT DISTINCT a.stu_id FROM course_details AS a WHERE NOT EXISTS ( SELECT NULL FROM course_details AS b WHERE b.enrol_dt = 2016 AND NOT EXISTS ( SELECT * FROM course_details AS c WHERE c.c_id = b.c_id AND c.stu_id = a.stu_id ) ); 选项设置的初始 Java堆大小大于-Xms请求的最大 Java堆大小选项。

您应检查-Xmx参数的值,并确保其不小于256米。

答案 1 :(得分:0)

在进一步研究之后,我们正在运行一个tomcat服务器,它又启动了Apache FOP。由于它试图解析的参数不正确,因此内存不足。

我们重新设置了设置,而是将以下两个更改传递给FOP作为默认值,它完美地运行。我们认为默认值无效或者太低而无法处理该流程。

path -Xms256m -Xmx1024m -jar fop.jar -c configFile -fo {null} -pdf outputPath