Ошибка DITA Open Toolkit: java.lang.StackOverflowError

Я использую 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?

Или у кого-нибудь есть идеи, как начать устранять эту проблему?

Спасибо!


person joe    schedule 07.06.2010    source источник
comment
Итак, я немного ошибся в своем вопросе. Оказывается, существует ссылка на XML-цифровой актив, в абзаце которого так много текста, что он вызывает ошибку. Если я разобью текст на несколько абзацев, произойдет преобразование. Не уверен, почему, это не похоже на миллион строк текста.   -  person joe    schedule 08.06.2010


Ответы (1)


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

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

person Justin Garrick    schedule 08.06.2010
comment
Спасибо! Вы знаете, как получить текущий размер стека Java? Я использую Windows XP 32 бит. - person joe; 08.06.2010
comment
320 КБ в Java 1.6 -- с java.sun.com/docs/hotspot/HotSpotFAQ .html#threads_oom: в Windows размер стека потока по умолчанию считывается из двоичного файла (java.exe). Начиная с Java SE 6, это значение равно 320 КБ для 32-разрядной виртуальной машины и 1024 КБ для 64-разрядной виртуальной машины. - person Justin Garrick; 08.06.2010