YUI-Compressor:结果文件为空

时间:2011-07-06 09:51:07

标签: yui-compressor

我正在使用YUI Compressor库来缩小CSS和JavaScript文件。我直接使用类CssCompressor和JavaScriptCompressor。

不幸的是,一些结果文件是空的,没有任何警告或例外。

我已经尝试了以下版本:

  • 的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中有一些使用媒体的错误,但这可能与空结果有关吗?

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。 在我的情况下,它源于我的javascript代码不是ECMA有效(我们使用一个名为double的变量,根据ECMA规则不允许)。

我没有勇气检查你的js是否有效但是试图压缩js文件的不同部分很容易导致你遇到问题。

答案 1 :(得分:3)

好吧,经过一段时间的调试后,我找到了一个解决方案。

问题不在于它自己的YUI Compressor,而是给该方法的FileWriter。

  • 刷新关闭FileWriter应解决空结果文件的问题
  • 因为我只需要缩小的String进行进一步处理我现在使用带有关闭和刷新的StringWriter