Cannot invoke "javafx.scene.control.MenuButton.getScene()" nach konvertierung zu maven

D

Der_AltMann

Aktives Mitglied
Ich habe ein "normales" Javafx Projekt zu einem maven Porjekt konvertiert, um die Vorteile der Modularisierung zu nutzen.
Nun bekomme ich einen Fehler, wenn ich die fxml Seite wechsle.
Java:
@FXML
private AnchorPane content = new AnchorPane();
@FXML
private Menu diagramOptions;
@FXML
void openSimpleMode(ActionEvent event) throws InvalidFileFormatException, IOException {
    diagramOptions.setVisible(true);
    FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/SimpleMode.fxml"));
    Node simpleModePane = null;
    try {
        simpleModePane = loader.load();
    } catch (Exception e) {
        System.out.println("error in loading pane");
    }
    content.getChildren().clear();
    content.getChildren().add(simpleModePane);
    simplecontroller = loader.getController();
    if (simplecontroller != null) {
        simplecontroller.initData(ldfParser, methods, this);
    } else {
        System.out.println("null Pointer exception");
    }
     System.out.println("error after this");
}
Der Fehler kommt nicht, wenn ich die Zeile:
Java:
 diagramOptions.setVisible(true);
weglasse.
Das komische ist, dass der Fehler erst nach der ganzen Methode kommt und alles "richtig" geladen und angezeigt wird.

der ganze Error:
Java:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Cannot invoke "javafx.scene.control.MenuButton.getScene()" because the return value of "javafx.scene.control.skin.MenuButtonSkinBase.getSkinnable()" is null
    at javafx.controls/javafx.scene.control.skin.MenuButtonSkinBase.lambda$new$7(MenuButtonSkinBase.java:188)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:832)

als es noch kein maven Projekt war habe ich den Fehler nicht bekommen
 
kneitzel

kneitzel

Top Contributor
Kannst Du ein kleines, minimales Beispiel bauen, das dieses Verhalten zeigt. Das ist so mit den wenigen Informationen nicht nachvollziehbar. Da wäre es gut, ein Beispiel mit dem Verhalten zu haben, das z.B. zeigt, wie das Menü in diagramOptions aussieht und so.

Denn es scheint ja ein Problem mit diesem Menü zu geben. Du setzt diesen auf Sichtbar. Das wirkt sich aber erst aus, wenn sozusagen das paint event abgearbeitet wird. Und dann hat der Button keine zugeordnete Scene oder so.

Ansonsten etwas Ratespass:
Welche JavaFX Version nutzt du? In JavaFX 12 gibt es einen bekannten Bug: https://bugs.openjdk.java.net/browse/JDK-8179097
Mit Version 14 wäre dies behoben.... (Also Entweder LTS Version 11 oder aktuelle Version 15 nutzen!)

Evtl. mögliche Workaround: Statt menü sichtbar/unsichtbar zu machen: Deaktivieren / aktivieren ...
 
D

Der_AltMann

Aktives Mitglied
Kannst Du ein kleines, minimales Beispiel bauen, das dieses Verhalten zeigt. Das ist so mit den wenigen Informationen nicht nachvollziehbar. Da wäre es gut, ein Beispiel mit dem Verhalten zu haben, das z.B. zeigt, wie das Menü in diagramOptions aussieht und so.

Denn es scheint ja ein Problem mit diesem Menü zu geben. Du setzt diesen auf Sichtbar. Das wirkt sich aber erst aus, wenn sozusagen das paint event abgearbeitet wird. Und dann hat der Button keine zugeordnete Scene oder so.

Ansonsten etwas Ratespass:
Welche JavaFX Version nutzt du? In JavaFX 12 gibt es einen bekannten Bug: https://bugs.openjdk.java.net/browse/JDK-8179097
Mit Version 14 wäre dies behoben.... (Also Entweder LTS Version 11 oder aktuelle Version 15 nutzen!)

Evtl. mögliche Workaround: Statt menü sichtbar/unsichtbar zu machen: Deaktivieren / aktivieren ...
Vielen Dank! der Ratespass war korrekt...es lag tatsächlich an der Version :D
 

Ähnliche Java Themen

Anzeige

Neue Themen


Oben