Ich möchte Javascript-Code von einem vorhandenen Java-Projekt (original question here) erzeugen.gwt-exporter erzeugt keinen Code (Java zu Javascript)
Ich benutze GWT in Verbindung mit gwt-Exporteur. Nachdem ich GWT kompiliert habe, erscheint keiner meiner Typen in irgendeinem generierten Code.
Ich habe
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;
}
}
Es gibt keinen Hinweis auf RoadServer
überall in meinem war/
Verzeichnis (grep -Ri RoadServer war/*
Matches nur die .class
Dateien). Außerdem, nur um sicher zu sein, öffnete ich die war/GameEntryPoint.html
Datei in meinem Browser (Firefox) und Firebug sieht nur game_GameEntryPoint
als etwas, das mit game
beginnt.
Irgendeine Idee, warum das nicht funktioniert?
P.S. Ich habe auch versucht, @Export
und @Export("RoadServer")
mit @ExportPackage("game")
zu spezifizieren. Nichts funktioniert.
+1 für nette Antwort! – GingerHead
Danke. Ich musste die Annotation "@ Export" sowohl für den Konstruktor als auch für die Klasse hinzufügen, damit dies funktionierte, aber schließlich. Auch hatte ich ein Problem mit Klassen, die Methoden hatten, die ein Array eines benutzerdefinierten Typs zurückgaben. Das Ändern dieser, um ein bestimmtes Array zu füllen, behebt dieses Problem ebenfalls. Es ist schade, dass die Dokumente im gwt-exporter diese Probleme nicht aufführen. – Yuval
Exportierbare Klassen benötigen entweder einen No-Args-Konstruktor oder einen, der ein JavaScriptObject akzeptiert. Es wäre nett, wenn es einen Kompilierzeitfehler oder -warnung gab, wenn es eine Klasse nicht exportieren kann, die Sie @Export aus diesem Grund markiert haben. – funkybro