1

我需要从 Java App 编译一个 GWT 项目。所以我用 CompilerOptions 创建了一个 Compiler 实例,它设置输出目录等。

我的代码是这样的:

 Compiler compiler=new Compiler(new CompilerOptions() {......
....
}

   ModuleDef def=new ModuleDef("sampleweb");
            def.clear();
            def.addSourcePackage("D:\\projects\\sampleweb\\src\\com\\sample\\web", new String[]{"client"}, new String[]{}, new String[]{}, true, false);
            def.addGwtXmlFile(new File("D:\\projects\\sampleweb\\src\\com\\sampleweb\\web\\Sampleweb.gwt.xml"));
            TreeLogger logger=new SwingTreeLogger(new SwingLoggerPanel(Type.ALL, new File("x.txt")));
            compiler.run(logger,def);

调用时compiler.run,会抛出如图所示的 NullPointerException

Exception in thread "main" java.lang.NullPointerException
    at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:373)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:246)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:229)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:141)
    at com.google.gwt.dev.Compiler.run(Compiler.java:232)
    at com.asklepian.TestApp.Starter.main(Starter.java:400)

我应该如何配置编译器?

4

1 回答 1

0

我将只创建 Java 源代码和 XML 模块代码,然后执行调用 GWT 编译器的 Java 进程。GWT 编译器位于 com.google.gwt.dev.Compiler,您可以在 Windows 中使用 java 命令从 DOS 命令 shell 执行它。编译器需要的唯一参数是 GWT 模块位置(模块 xml 文件的位置)。

于 2013-03-11T17:20:34.787 回答