【问题标题】:DITA Open Toolkit error: java.lang.StackOverflowErrorDITA 打开工具包错误:java.lang.StackOverflowError
【发布时间】:2010-06-07 17:43:09
【问题描述】:

我正在使用DITA Open Toolkit 将 XML 内容转换为具有不同的标签名称。但是我的一个 XML 文档没有转换...

BUILD FAILED
C:\DITA-OT\build.xml:55: The following error occurred while executing this line:

C:\DITA-OT\build.xml:86: The following error occurred while executing this line:

java.lang.StackOverflowError

此错误发生在处理完成之前。所以只有前 3/4 变换。如果我删除 1/4 的内容,则转换能够完成。 (我可以删除任何部分,我删除的越多,转换在文档中越远,所以我不认为它的无效标签或类似的东西)。

我是否需要更新我的配置以允许 Java 进程使用更多资源?

或者有没有人知道如何开始解决这个问题?

谢谢!

【问题讨论】:

  • 好的,所以我的问题有点说错了。事实证明,有一个 XML 数字资产被引用,其中一个段落的文本太多以至于导致错误。如果我将文本分成多个段落,则转换会进行。不知道为什么,它不像有一百万行文本。

标签: java dita dita-ot


【解决方案1】:

您可以考虑通过 JVM 参数调整堆栈大小。在您的控制台/终端输入 java -X 以查看它们的列表。在这种情况下,您可能最感兴趣的是更改堆栈大小:-Xss。例如,您可以尝试java -Xss2048k。如果您使用的是 Linux,您可能最终还必须使用 ulimit 更改您的操作系统线程堆栈大小。通常,您可以通过将 ulimit -s 2048 之类的内容添加到 /etc/profile 来做到这一点。

如果这不起作用,请尝试通过http://sourceforge.net/projects/dita-ot/ 提交错误报告或联系作者。

【讨论】:

  • 谢谢!你知道如何获取当前的 java 堆栈大小吗?我正在运行 Windows XP 32 位。
  • Java 1.6 中的 320k -- 来自java.sun.com/docs/hotspot/HotSpotFAQ.html#threads_oom:“在 Windows 上,默认线程堆栈大小是从二进制文件 (java.exe) 中读取的。在 Java SE 6 中,此值为 320k 32 位 VM 和 64 位 VM 中的 1024k。"
猜你喜欢
  • 2021-11-01
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
相关资源
最近更新 更多