1

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 内にいくつかのバグがあることは知っていますが、これは空の結果に関連している可能性がありますか?

4

2 に答える 2

3

私も同じ問題を抱えていました。私の場合、JavaScriptコードがECMAで有効ではなかったことが原因です(ECMAルールでは許可されていないdoubleという名前の変数を使用しています)。

jsが有効かどうかを確認する勇気はありませんでしたが、jsファイルのさまざまな部分を圧縮しようとすると、問題が存在する場合は簡単に問題が発生する可能性があります。

于 2011-07-07T08:19:32.767 に答える
3

さて、しばらくデバッグした後、解決策を見つけました。

問題は YUI Compressor 自体ではなく、メソッドに指定された FileWriter でした。

  • FileWriter を閉じてフラッシュすると、空の結果ファイルの問題が解決するはずです
  • さらなる処理には縮小された文字列のみが必要なので、閉じてフラッシュする StringWriter を使用するようになりました
于 2011-07-15T07:15:46.320 に答える