Groovy говорит, что моя строка Unicode слишком длинная - PullRequest
6 голосов
/ 26 июля 2011

Как часть моего, вероятно, неправильного и громоздкого решения распечатать форму, я взял документ MS-Word, сохраненный как XML, и я пытаюсь сохранить этот XML в виде строки, чтобы я мог $ {fillOutTheFormProgrammatics}

Однако, когда документы MS-Word имеют такой большой размер, String составляет 113100 символов Юникода, и Groovy говорит, что он ограничен 65536. Есть ли способ изменить это или я застрял с разделением строки?

Groovy - нужно сделать печатную форму

Вот что я пытаюсь сделать.

Обновление: чтобы очистить его слишком долгоGroovy String .. Я думаю, что обычная строка может быть все хорошо.Собираясь изменить стратегию и поместить несколько строк в файл, я легко могу найти, например,%!% Variable_name%!%, А затем сделать .replace (... э-э, я чувствую, что здесь возникает новый вопрос ...

Ответы [ 2 ]

6 голосов
/ 28 июля 2011

Вы встраиваете эту строку прямо в кодовый код? Сам jvm имеет ограничение на длину строковых констант, см. VM Spec , если вас интересуют подробности.

Уродливый обходной путь может состоять в том, чтобы разбить строку на более мелкие части и объединить их во время выполнения. Лучшим решением было бы сохранить текст во внешнем файле и прочитать содержимое из вашего кода. Вы также можете упаковать этот файл вместе с вашим кодом и получить к нему доступ из пути к классам, используя Class # getResourceAsStream .

0 голосов
/ 27 июля 2011

Какое исключение вы получаете? Я не верю, что Groovy String ограничен 65536, так как в основном это строка Java.

Звучит так, будто вы пытаетесь где-то рекурсировать и достигаете лимита стека вызовов 65536.

Однако, как говорится, загрузка 100К + символа в память за один раз кажется излишним ..

Почему бы не проанализировать XML с помощью SAX-анализатора или аналогичного для получения результатов?

Или почему бы не сохранить только те данные, с которых нужно начать, а не полагаться на сотни тысяч символов xml (которые, как я полагаю, вам нужен только небольшой раздел)

...