如何从Java应用程序以编程方式编译GWT项目?

时间:2013-03-11 15:07:07

标签: gwt gwt-compiler

我需要从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)

我应该如何配置编译器?

1 个答案:

答案 0 :(得分:0)

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