我正在使用YUI Compressor库来缩小CSS和JavaScript文件。我直接使用类CssCompressor和JavaScriptCompressor。
不幸的是,一些结果文件是空的,没有任何警告或例外。
我已经尝试了以下版本:
我用过的代码是:
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中有一些使用媒体的错误,但这可能与空结果有关吗?
答案 0 :(得分:3)
我遇到了同样的问题。 在我的情况下,它源于我的javascript代码不是ECMA有效(我们使用一个名为double的变量,根据ECMA规则不允许)。
我没有勇气检查你的js是否有效但是试图压缩js文件的不同部分很容易导致你遇到问题。
答案 1 :(得分:3)
好吧,经过一段时间的调试后,我找到了一个解决方案。
问题不在于它自己的YUI Compressor,而是给该方法的FileWriter。