簡體   English   中英

YUICompressor崩潰 - stackoverflow錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM