2011-07-06 56 views
1

我使用的是YUI壓縮庫來縮小CSS和JavaScript文件。我直接使用類CssCompressor和JavaScriptCompressor。YUI-壓縮機:結果文件是空

不幸的是一些文件的結果是沒有任何警告或異常空。

  • 的YUICompressor-2.4.2.jar
  • 的YUICompressor-2.4.6.jar
  • 的YUICompressor-2.4.7pre.jar

我已經與版本試了一下

我使用的代碼是:

public static void compress(File file) { 

    try { 
     long start = System.currentTimeMillis(); 
     File targetFile = new File("results", file.getName() + ".min"); 
     Writer writer = new FileWriter(targetFile); 

     if (file.getName().endsWith(".css")) { 
      CssCompressor cssCompressor = new CssCompressor(new FileReader(file)); 
      cssCompressor.compress(writer, -1); 

     } else if (file.getName().endsWith(".js")) { 
      JavaScriptCompressor jsCompressor = new JavaScriptCompressor(new FileReader(file), new MyErrorReporter()); 
      jsCompressor.compress(writer, -1, true, false, false, true); 
     } 

     long end = System.currentTimeMillis(); 
     System.out.println("\t compressed " + file.getName() + " within " + (end - start) + " milliseconds"); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

文件哪些不起作用(之後是空的)是例如

我知道有在使用的YUICompressor媒體中的一些bug,但是這會是與空結果關係?

+0

你能解決這個問題? –

+0

@ Fran_gg7好吧,這是很久以前的事了。不記得,但根據我的回答下面我用了一個不同的作家(StringWriter而不是FileWriter),所以我想我解決了它當時 – monty

回答

3

我有同樣的問題。 在我的情況下,它源於我的JavaScript代碼不是ECMA有效的(我們使用一個名爲double的變量,根據ECMA規則不允許)。

我沒有足夠的勇氣去檢查,如果你的JS是有效的,但如果想要壓縮您的js文件的不同部分,如果它存在,很容易導致你的問題。

3

好了,在調試之後,我想出了一個解決方案。

問題是不是YUI壓縮機它的自我,但它是提供給方法的FileWriter。

  • 沖洗的關閉FileWriter的應該解決空的結果文件的問題
  • ,因爲我只需要作進一步處理的精縮字符串我現在使用的StringWriter與關閉和沖洗