2

我想从现有的 Java 项目中生成 Javascript 代码(这里的原始问题)。

我将 GWT 与 gwt-exporter 结合使用。在我 GWT 编译之后,我的类型都没有出现在任何生成的代码中。

我有

游戏入口点.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文件)。另外,为了确定,我war/GameEntryPoint.html在浏览器 (Firefox) 中打开了该文件,而 Firebug 只看到game_GameEntryPointgame.

知道为什么这不起作用吗?

PS我也尝试指定@Exportand @Export("RoadServer")with @ExportPackage("game")。没有任何效果。

4

1 回答 1

3

啊哈,所以看起来它是ExporterUtil.exportAll(). 如果类具有非空构造函数或没有任何方法,则不会导出。但是,如果您向导出的类添加一个空构造函数,并使用注释对非空构造函数进行@Export注释,它就会开始工作

您也可以手动导出一个类:

public class GameEntryPoint implements EntryPoint {

    @Override
    public void onModuleLoad() {
        ExporterUtil.exportAll();
        GWT.create(RoadServer.class); //forcing to export road server
    }

}

但请注意,这种方式有时会导出一个有错误的类

于 2012-04-07T20:48:56.990 回答