NullPointerException, интегрирующий Closure Compiler API в код Java - PullRequest
0 голосов
/ 28 марта 2012

Это приложение должно получить некоторый код из HttpServletRequest, скомпилировать его и вернуть файл с скомпилированным кодом.

Однако я получаю сообщение об ошибке при запуске вызова 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();
    }
}

ОШИБКА:

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 Ответ

1 голос
/ 28 марта 2012

Для первого параметра compiler.compile просто необходимо предоставить список внешних объектов, даже если это пустая строка.

...