我正在尝试使用最新版本的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%确定调试此问题需要哪些信息。
答案 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