我想从现有的Java项目(original question here)生成Javascript代码。
我将GWT与gwt-exporter结合使用。在GWT编译之后,我的所有类型都没有出现在任何生成的代码中。
我有
GameEntryPoint.java
package game.client;
import org.timepedia.exporter.client.ExporterUtil;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;
public class GameEntryPoint implements EntryPoint {
@Override
public void onModuleLoad() {
ExporterUtil.exportAll();
}
}
RoadServer.java
package game.client;
import org.timepedia.exporter.client.Exportable;
public class RoadServer implements Exportable {
int _index;
int _id;
public RoadServer(int index,int id){
this._id=id;
this._index=index;
}
}
我RoadServer
目录中的任何地方都没有引用war/
(grep -Ri RoadServer war/*
仅匹配.class
个文件)。另外,为了确保,我在浏览器(Firefox)中打开了war/GameEntryPoint.html
文件,而Firebug只看到game_GameEntryPoint
作为以game
开头的内容。
知道为什么这不起作用吗?
P.S。我还尝试使用@Export
指定@Export("RoadServer")
和@ExportPackage("game")
。什么都行不通。
答案 0 :(得分:3)
啊哈,所以看起来好像是ExporterUtil.exportAll()
中的一些错误。如果类具有非空构造函数或者没有任何方法,则不会导出它。但是,如果向导出的类添加一个空构造函数,并使用@Export
注释注释非空构造函数,它将开始工作
您也可以手动导出课程:
public class GameEntryPoint implements EntryPoint {
@Override
public void onModuleLoad() {
ExporterUtil.exportAll();
GWT.create(RoadServer.class); //forcing to export road server
}
}
但请注意,这种方式有时会导出错误的类