Freitag, 9. August 2019

JavaFX: NoSuchMethodException init

Manchmal wird man bei JavaFX mit der folgenden Fehlermeldung gequält:

java.lang.NoSuchMethodException: xx.yy.zz.MyController<init>()

Da kommt die Frage auf: Welche init-Methode? Bevor Sie sie jetzt damit beschäftigen, irgendwelche Methoden namens init() zu schreiben, sollten Sie es mal mit der einfachen Lösung versuchen.

JavaFX benötigt einen Standardkonstruktor. Wenn Sie diese Fehlermeldung erhalten, haben Sie den Standardkonstruktor in Ihrem Controller wahrscheinlich überschrieben. Sobald Sie ihn hinzugefügt haben, sollte die unselige Fehlermeldung verschwunden sein.

Generell sollten Sie bei JavaFX den Controllern keinen Konstruktor geben, denn das Framework ruft ihn sowieso nicht auf und im Konstruktor sind notwendige Referenzen noch nicht definiert.

Verwenden Sie immer eine Methode initialize(), die Sie mit @FXML markieren:

@FXML
public void initialize() {
    System.out.println("Ich bin bei JavaFX besser  als der Konstruktor!");
}

Keine Kommentare:

Kommentar veröffentlichen