2010-06-07 44 views
1

我正在使用DITA Open Toolkit來轉換XML內容以具有不同的標籤名稱。但是我的一個XML文檔沒有轉換...DITA Open Toolkit錯誤:java.lang.StackOverflowError

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進程?

還是沒有人有任何想法如何開始解決這個問題?

謝謝!

+0

好的,所以我在我的問題中有點誤解。結果發現有一個XML數字資產被引用,其中有一段文字太多而導致錯誤。如果我將文本分成多個段落,轉換就會進行。不知道爲什麼,它不像有一百萬行文字。 – joe 2010-06-08 16:32:53

回答

2

您可能會考慮通過JVM參數調整堆棧大小。在您的控制檯/終端上鍵入java -X以查看它們的列表。在這種情況下,您可能最有興趣更改堆棧大小:-Xss。例如,您可以嘗試java -Xss2048k。如果你在Linux上,你最終可能不得不用ulimit來改變你的OS線程堆棧大小。通常情況下,您可以通過在/ etc/profile中添加諸如ulimit -s 2048之類的內容來完成此操作。

如果這不起作用,請嘗試在http://sourceforge.net/projects/dita-ot/處提交錯誤報告或聯繫作者。

+0

謝謝!你知道如何獲得當前的Java堆棧大小嗎?我正在運行Windows XP 32位。 – joe 2010-06-08 14:08:39

+1

Java中的320k 1.6 - 來自http://java.sun.com/docs/hotspot/HotSpotFAQ.html#threads_oom:「在Windows上,默認線程堆棧大小是從二進制文件(java.exe)中讀取的。在Java SE 6中,這個值在32位虛擬機中爲320k,在64位虛擬機中爲1024k。「 – 2010-06-08 14:25:24

相關問題