2011-07-06 2 views
1

YUI Compressor 라이브러리를 사용하여 CSS 및 JavaScript 파일을 축소합니다. 나는 CssCompressor와 JavaScriptCompressor 클래스를 직접 사용한다.YUI-Compressor : 결과 파일이 비어 있습니다.

불행히도 결과 파일 중 일부가 경고 또는 예외없이 비어 있습니다.

  • 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 사용하여 미디어 내에서 몇 가지 버그가 있지만이 빈 결과의 관계에있을 수 있습니다 알고

?

+0

당신은 그것을 고칠 수 ? –

+0

@ Fran_gg7 음, 오래 전이었습니다. 기억이 안나지만 아래의 나의 대답에 따르면 나는 다른 Writer (FileWriter 대신 StringWriter)를 사용했기 때문에 나는 그 때 그것을 풀 었다고 생각한다. – monty

답변

3

나는 동일한 문제가있었습니다. 내 경우에는 내 자바 스크립트 코드가 ECMA 유효하지 않았기 때문에 (ECMA 규칙에 따라 허용되지 않는 double이라는 변수를 사용합니다.)

js가 유효한지 확인하는 용기가 없었지만 js 파일의 다른 부분을 압축하려고하면 쉽게 문제가 발생할 수 있습니다.

3

글쎄, 디버깅하는 동안 잠시 후 나는 해결책을 찾아 냈다.

문제는 YUI Compressor 자체가 아니지만 메서드에 지정된 FileWriter입니다.

  • 플러싱 난 단지 추가 처리를 위해 축소 된 문자열을 필요로하기 때문에 지금은 폐쇄와 StringWriter를를 사용
  • 빈 결과 파일의 문제를 해결해야 FileWriter를 폐쇄하고 플러싱