什么可能导致fop间歇性java.io.FileNotFoundException:/tmp/fop-page-0.ser错误

时间:2017-04-03 15:53:44

标签: xsl-fo apache-fop

我们有一个系统运行fop的旧版本(0.20.5)。 多年来一直运行良好,## Heading ##他最近3个月我们开始看到间歇性的xml到pdf转换错误。

Mar 27, 2017 3:00:26 AM org.apache.fop.events.LoggingEventListener processEvent
SEVERE: Error while deserializing page 1. Reason:    java.io.FileNotFoundException: /tmp/fop-page-0.ser (No such file or directory)
java.io.FileNotFoundException: /tmp/fop-page-0.ser (No such file or directory)

如果我们重新运行相同的转换,它可以正常运行。 我建议将fop升级到最新版本,但我在发布说明https://xmlgraphics.apache.org/fop/changes.html中没有发现任何相关内容。

这是一个已知的问题,是否在fop发布中解决了?

导致这种情况的原因是什么?

  • AFAIK没有与fop相关的更改。
  • 工作量增加了,我的猜测是并发转换的问题

2 个答案:

答案 0 :(得分:1)

感谢Stefan Hegny指出我正确的方向。在我们最新版本的fop脚本中,每次执行脚本时都会通过创建临时临时目录来修复此问题。

为实现这一目标,我添加了以下2行

FOP_TEMP=$(mktemp -d)
FOP_OPTS="$FOP_OPTS -Djava.io.tmp=$FOP_TEMP"
退出java命令行之前的

$JAVACMD -classpath "$LOCALCLASSPATH" -Djava.awt.headless=true $FOP_OPTS org.apache.fop.apps.Fop "$@"

rmdir $FOP_TEMP

最后进行清理。

答案 1 :(得分:0)

卡尔 谢谢你的解决方案。我们遇到了与fop-1.1相同的问题,但要解决这个问题,我们必须使用属性:java.io.tmpdir。我们将线路改为: FOP_OPTS =“$ FOP_OPTS -Djava.io.tmp = $ FOP_TEMP -Djava.io.tmpdir = $ FOP_TEMP”

最新版本的FOP(2.0+)会生成自己的临时目录。