Я часто получаю то, что кажется ошибкой переполнения стека ;-) от YUICompressor. Ниже приведена первая часть тысяч строк ошибок, возникающих при попытке сжать таблицу стилей css размером 24074 байта (а не «Причина, вызванная java.lang.StackOverflowError, примерно на 8 строк ниже):
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» - это параметр, указывающий размер стека. Значение по умолчанию 512k. Итак, я попробовал 1024k, но это все равно привело к переполнению стека. Попытка 2048k работает, однако, и я думаю, что это может быть решением.
РЕДАКТИРОВАТЬ 2:
Несмотря на то, что я больше не использую этот метод для минификации, более конкретно здесь приводится полная команда (которую я настроил как псевдоним оболочки), показывающая, как используется параметр -Xss2048k:
java -Xss2048k -jar ~ / Документы / RepHunter / Веб-сайт \ Материалы / Код / Third / Party \ Библиотеки / YUI \ Компрессор / yuicompressor-2.4.8.jar --type css -o