2012-03-27 2 views
-1

이 응용 프로그램은 HttpServletRequest에서 일부 코드를 받아 컴파일하고 컴파일 된 코드로 파일을 반환해야합니다.NullPointerException Java 코드로 Closure Compiler API를 통합

그러나 compiler.compile() 호출을 실행하는 중에 오류가 발생합니다. Eclipse에서 컴파일 할 때 경고 또는 오류 메시지가 표시되지 않았습니다.

어떤 제안을 해주시겠습니까?

감사

public class MyServlet extends HttpServlet { 

    public void doPost(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException 
    { 
     res.setHeader("Content-Type", "text/javascript;charset=utf-8"); 
     res.setHeader("Content-Disposition","attachment;filename=compiled.js"); 
     PrintWriter printer=res.getWriter(); 
     String compiledCode=compile(req.getParameter("inputScript")); 
     printer.write(compiledCode); 
     printer.close(); 
    } 

    public static String compile(String code) 
    { 
     com.google.javascript.jscomp.Compiler.setLoggingLevel(Level.INFO); 
     com.google.javascript.jscomp.Compiler compiler = new com.google.javascript.jscomp.Compiler(); 

     compiler.disableThreads(); 
     CompilerOptions options = new CompilerOptions(); 
     CompilationLevel.SIMPLE_OPTIMIZATIONS.setOptionsForCompilationLevel(options); 
     JSSourceFile js = JSSourceFile.fromCode("input.js", code); 
     WarningLevel.QUIET.setOptionsForWarningLevel(options);  
     compiler.compile(null, js, options); 
     return compiler.toSource(); 
    } 
} 

ERROR :

java.lang.NullPointerException 
    at com.google.javascript.jscomp.JsAst.<init>(JsAst.java:44) 
    at com.google.javascript.jscomp.CompilerInput.<init>(CompilerInput.java:91) 
    at com.google.javascript.jscomp.Compiler.makeCompilerInput(Compiler.java:381) 
    at com.google.javascript.jscomp.Compiler.initModules(Compiler.java:341) 
    at com.google.javascript.jscomp.Compiler.init(Compiler.java:317) 
    at com.google.javascript.jscomp.Compiler.compile(Compiler.java:525) 
    at com.google.javascript.jscomp.Compiler.compile(Compiler.java:491) 

답변

1

그것은 단순히 당신이 첫 번째 매개 변수의 compiler.compile 빈 문자열이 경우에도 externs의 목록을 제공해야한다는 것입니다.

관련 문제