2

Web 開発チーム用のビルド スクリプトを作成しています。このスクリプトを使用して、本番用のすべてのフロントエンド コードを準備します。YUI Compressor を使用して、CSS ファイルと JavaScript ファイルを圧縮しています。CSS 部分ではすべて正常に動作しますが、JavaScriptCompressor クラス インスタンスで問題が発生しています。

次の行を介して YUI ファイルをインポートしています。

import com.yahoo.platform.yui.compressor.*;

ここに私の JavaScriptCompressor インスタンスがあります:

FileReader ftcreader = new FileReader(ftc);
JavaScriptCompressor js = new JavaScriptCompressor(ftcreader);

参考までに、正しく動作する CssCompressor クラスの使用方法を次に示します。

FileReader ftcreader = new FileReader(ftc);
CssCompressor css = new CssCompressor(ftcreader);

何らかの理由で、次のような JavaScriptCompressor クラスのエラーが表示されます。

The constructor JavaScriptCompressor(FileReader) is undefined

YUI Compressor ファイルを正しくインポートしていませんか? それとも別のものですか?どんな助けでも大歓迎です。

4

1 に答える 1

2

コンストラクターの 2 番目の引数である ErrorReporter がありません。

    JavaScriptCompressor compressor = 
      new JavaScriptCompressor(in, new SystemOutErrorReporter());
    compressor.compress(out, 1 << 20, false, false, false, false);

次に、サンプル ErrorReporter:

class SystemOutErrorReporter implements ErrorReporter {

    private String format(String arg0, String arg1, int arg2, String arg3, int arg4) {
        return String.format("%s%s at line %d, column %d:\n%s",
            arg0,
            arg1 == null ? "" : ":" + arg1,
            arg2,
            arg4,
            arg3);
    }

    @Override
    public void warning(String arg0, String arg1, int arg2, String arg3, int arg4) {
        System.out.println("WARNING: " + format(arg0, arg1, arg2, arg3, arg4));
    }

    @Override
    public void error(String arg0, String arg1, int arg2, String arg3, int arg4) {
        System.out.println("ERROR: " + format(arg0, arg1, arg2, arg3, arg4));
    }

    @Override
    public EvaluatorException runtimeError(String arg0, String arg1, int arg2, String arg3, int arg4) {
        System.out.println("RUNTIME ERROR: " + format(arg0, arg1, arg2, arg3, arg4));
        return new EvaluatorException(arg0);
    }
}
于 2009-07-10T20:32:22.090 に答える