Apache FOP Return 关于 PDF 生成的代码 1

Apache FOP Return Code 1 on PDF Generation

我正在尝试使用最新版本的 Apache FOP 生成 PDF。但是,在执行此操作时,return 代码出现错误。出于某种原因,它现在 return 在进程执行时使用“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

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

Error occurred during initialization of VM Initial heap size set to a larger value than the maximum heap size

感谢任何有关此主题的建议,如果您需要更多信息,我也很乐意更新我的问题,因为我不是 100% 确定调试此问题需要哪些信息。

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

Error occurred during initialization of VM Initial heap size set to a larger value than the maximum heap size

这意味着使用 -Xms 选项设置的 initial Java 堆大小大于 maximum Java 使用 -Xmx 选项请求的堆大小。

您应该检查您的 {maxmemory} 参数值并确保它不小于 256m。

进一步调查后,我们是 运行 一个 tomcat 服务器,它反过来启动 Apache FOP。它 运行 内存不足,因为它试图解析的参数不正确。

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

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