2012-03-27 4 views
-1

このアプリケーションは、HttpServletRequestからいくつかのコードを受け取り、コンパイルし、コンパイル済みコードでファイルを返す必要があります。JavaコードでClosure Compiler APIを統合するNullPointerException

ただし、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のために、それは空の文字列であっても、外部宣言のリストを提供する必要があるということだけです。

関連する問題