2012-01-12 3 views
4

Я часто получаю то, что кажется ошибкой stackoverflow ;-) от YUICompressor. Ниже является первой частью тысяч строк ошибок, которые приходят от попыток сжать 24074 байт таблицы стилей CSS (не «причиненный java.lang.StackOverflowError около 8 строк вниз):Сбой YUICompressor - ошибка stackoverflow

iMac1:src jas$ min ../style2.min.css style2.css 
Exception in thread "main" java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:21) 
Caused by: java.lang.StackOverflowError 
    at java.lang.Character.codePointAt(Character.java:2335) 
    at java.util.regex.Pattern$CharProperty.match(Pattern.java:3344) 
    at java.util.regex.Pattern$Branch.match(Pattern.java:4114) 

... (плюс 1021 больше строк ошибок)

Ошибки происходят обычно после добавления пары строк в сжатый файл. Css отлично работает и отлично работает в несжатом формате. Я не вижу конкретного шаблона для типов селекторов, добавленных в файл, которые вызывают ошибки. В этом случае добавление следующего селектора в ранее сжимаемый файл приводило к ошибкам:

#thisisatest 
{ 
    margin-left:87px; 
} 

Мне интересно, есть ли флаг java для увеличения стека, который может помочь. Или, если это не проблема, что это такое?

EDIT:

Как я отправлял этот вопрос, до меня дошло, что я должен проверить команду Java, чтобы увидеть, есть ли параметр, чтобы увеличить стек. Оказывается, что это -Xssn, где «n» - это параметр, указывающий размер стека. Его значение по умолчанию - 512 тыс. Поэтому я попробовал 1024k, но это все равно привело к потоку stackoverflow. Тем не менее, попытка 2048k работает, и я думаю, что это может быть решением.

ответ

6

Как указано в моем редактировании, решение заключалось в том, чтобы добавить параметры в команду java. Разгадка была линия ошибка в 5-м «на» линии, а именно:

at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:21) 
Caused by: java.lang.StackOverflowError 

Видя, что этот вопрос был «StackOverlowError» ;-) дал предложение, чтобы попытаться увеличить размер стека. Значение по умолчанию - 512k. Моя первая попытка 1024k не сработала. Однако увеличение его до 2048 тыс. Дел сработало, и у меня не было никаких дополнительных проблем.

+1

как я могу установить значение по умолчанию -Xssn для java? –