[英]YUICompressor crashes - stackoverflow error
我經常從YUICompressor得到似乎是stackoverflow錯誤的東西;-)。 以下是數千條錯誤行的第一部分,這些錯誤行來自於嘗試壓縮24074字節的css樣式表(而不是“由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命令,看看是否有一個參數來放大堆棧。 原來它是-Xssn,其中“n”是表示堆棧大小的參數。 其默認值為512k。 所以我嘗試了1024k,但仍然導致了stackoverflow。 然而,嘗試2048k工作,我認為這可能是解決方案。
編輯2:
雖然我不再使用此方法進行縮小,但更具體的是完整命令(我已將其設置為shell別名),顯示如何使用-Xss2048k參數:
java -Xss2048k -jar~ / Documents / RepHunter / Website \\ Materials / Code / Third \\ Party \\ Libraries / YUI \\ Compressor / yuicompressor-2.4.8.jar --type css -o
正如我在編輯中發布的那樣,解決方案是將參數添加到java命令中。 線索是第5行“at”行的錯誤行,如下所示:
at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:21)
Caused by: java.lang.StackOverflowError
看到問題是“StackOverlowError”;-)給出了嘗試增加堆棧大小的建議。 默認值為512k。 我的第一次嘗試1024k無法正常工作。 然而,它增加到2048k確實有效,我沒有進一步的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.