Seit neuestem verwende ich den UiBinder von GWT um deklarativ das Layout der GWT-Seiten zu beschreiben. Das funktioniert soweit auch ganz gut und hält vor allem den Quellcode sauber.
Nun, bin ich aber aufgrund von diversen Rahmenbedingen dazu gezwungen eine etwas ältere Version von Java zu benutzen. Nämlich Java 1.5. Normales GWT funktioniert damit auch ohne Probleme. Allerdings seitdem ich den UiBinder verwende bekomme ich immer folgende Exception:
java.lang.VerifyError: (class: com/google/gwt/core/client/Scheduler, method:
Irgendwie kommt also der UiBinder von GWT nicht mit Java 1.5 zurecht. Zum Glück gibt es dafür einen Workaround. Im EntryPoint eurer Applikation muss ein DeferredCommand benutzt werden um Methoden auf dem RootPanel aufzurufen. Wird das DefferedCommand eingesetzt, funktioniert der UiBinder auch mit Java 1.5.
Das ganze sieht dann in etwa so aus:
Java
- public class TestUiBinderGwt implements EntryPoint {
- public void onModuleLoad() {
- DeferredCommand.addCommand(new Command() {
- public void execute() {
- start();
- }
- });
- }
- private void start() {
- //put your code here
- RootPanel.get().add(new TestPage());
- }
- }