2012-04-07 7 views
2

既存のJavaプロジェクト(original question here)からJavascriptコードを生成したい。gwt-exporterがコードを生成しない(Java to Javascript)

gwtをgwt-exporterと組み合わせて使用​​します。私がGWTをコンパイルした後、生成されたコードのいずれにも自分の型がない。

私はRoadServerへの参照は、どこにも私のwar/ディレクトリ(grep -Ri RoadServer war/*試合だけではありません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; 
    } 
} 

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(); 
    } 

} 

を持っています.classファイル)。また、確かに、私はwar/GameEntryPoint.htmlファイルを私のブラウザ(Firefox)に開きました。そして、Firebugはgame_GameEntryPointだけをgameで始まるものと見ています。

これはなぜ機能しないのでしょうか?

P.S.私も@Export@Export("RoadServer")@ExportPackage("game")で指定しようとしました。何も動作しません。

答えて

3

Ahaのように、ExporterUtil.exportAll()にいくつかのバグがあるようです。クラスが空でないコンストラクタを持っているか、またはメソッドを持たないクラスは、エクスポートされません。

public class GameEntryPoint implements EntryPoint { 

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

} 

しかし、この方法では、ことがあるので注意してください:あなたは、エクスポートクラスに空のコンストラクタを追加し、@Exportアノテーションで非空のコンストラクタに注釈を付けている場合しかし、それは

また、手動でクラスをエクスポートすることができ、作業を開始しますエラーのあるクラスをエクスポートすることがあります

+0

+1すてきな答えです! – GingerHead

+0

ありがとうございます。これを行うにはコンストラクタとクラスの両方に '@ Export'アノテーションを追加しなければなりませんでしたが、やっとそれができました。また、カスタム型の配列を返すメソッドを持つクラスにも問題がありました。特定の配列に値を設定するように変更すると、その問題も修正されました。 gwt-exporterのドキュメントにはこれらの問題がリストされていないのは残念です。 – Yuval

+1

エクスポート可能なクラスには、引数なしコンストラクタか、JavaScriptObjectを受け入れるコンストラクタが必要です。この理由で@Exportをマークしたクラスをエクスポートできない場合は、コンパイル時にエラーまたは警告を出すといいでしょう。 – funkybro

関連する問題