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

您缺少 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 回答