2010-06-07 5 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 Digital Asset, в которой есть абзац, в котором столько текста, что оно вызывает ошибку. Если я сломаю текст на несколько абзацев, это будет происходить. Не уверен, почему, это не похоже на миллион строк текста. – joe

ответ

2

Возможно, вы можете настроить размер стека с помощью параметров JVM. Введите java -X на свою консоль/терминал, чтобы просмотреть их список. В этом случае вы, вероятно, больше всего заинтересованы в изменении размера стека: -Xss. Например, вы можете попробовать java -Xss2048k. Если вы работаете в Linux, вам также может потребоваться изменить размер стека стеков ОС на ulimit. Как правило, вы сделали бы это, добавив что-то вроде ulimit -s 2048 в/etc/profile.

Если это не сработает, попробуйте отправить отчет об ошибке в http://sourceforge.net/projects/dita-ot/ или связаться с авторами.

+0

Спасибо! Вы знаете, как получить текущий размер стека java? Я использую 32-разрядную версию Windows XP. – joe

+1

320k в Java 1.6 - от http://java.sun.com/docs/hotspot/HotSpotFAQ.html#threads_oom: «В Windows размер стека по умолчанию считывается из двоичного файла (java.exe). Java SE 6, это значение составляет 320 тыс. В 32-разрядной VM и 1024k в 64-разрядной виртуальной машине ». –