From 4d979c26f668adba35086b49963e8daa33ef5af7 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Sun, 22 Feb 2015 12:36:17 +0100 Subject: [PATCH] (hopefully) fixed NPE in FXMLLoader. see http://stackoverflow.com/questions/26434758/npe-in-fxmlloader/26436265#26436265 --- .../ui/src/main/java/org/cryptomator/ui/MainApplication.java | 4 ++-- main/ui/src/main/java/org/cryptomator/ui/MainController.java | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/MainApplication.java b/main/ui/src/main/java/org/cryptomator/ui/MainApplication.java index df204e2b6..21a751db1 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/MainApplication.java +++ b/main/ui/src/main/java/org/cryptomator/ui/MainApplication.java @@ -18,7 +18,6 @@ import java.util.concurrent.ExecutorService; import javafx.application.Application; import javafx.application.Platform; import javafx.fxml.FXMLLoader; -import javafx.fxml.JavaFXBuilderFactory; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; @@ -74,6 +73,7 @@ public class MainApplication extends Application { @Override public void start(final Stage primaryStage) throws IOException { ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + FXMLLoader.setDefaultClassLoader(contextClassLoader); Platform.runLater(() -> { /* * This fixes a bug on OSX where the magic file open handler leads to no context class loader being set in the AppKit (event) @@ -88,7 +88,7 @@ public class MainApplication extends Application { chooseNativeStylesheet(); final ResourceBundle rb = ResourceBundle.getBundle("localization"); - final FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/main.fxml"), rb, new JavaFXBuilderFactory(MainApplication.class.getClassLoader())); + final FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/main.fxml"), rb); loader.setControllerFactory(controllerFactory); final Parent root = loader.load(); final MainController ctrl = loader.getController(); diff --git a/main/ui/src/main/java/org/cryptomator/ui/MainController.java b/main/ui/src/main/java/org/cryptomator/ui/MainController.java index 130a66be0..78deb7b4f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/MainController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/MainController.java @@ -26,7 +26,6 @@ import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; -import javafx.fxml.JavaFXBuilderFactory; import javafx.geometry.Side; import javafx.scene.Parent; import javafx.scene.control.ContextMenu; @@ -38,7 +37,6 @@ import javafx.scene.layout.Pane; import javafx.stage.FileChooser; import javafx.stage.Stage; import javafx.stage.WindowEvent; -import javafx.util.BuilderFactory; import org.cryptomator.crypto.Cryptor; import org.cryptomator.ui.InitializeController.InitializationListener; @@ -81,7 +79,6 @@ public class MainController implements Initializable, InitializationListener, Un private final ControllerFactory controllerFactory; private final Settings settings; private final Provider cryptorProvider; - private final BuilderFactory builderFactory = new JavaFXBuilderFactory(MainController.class.getClassLoader()); private ResourceBundle rb; @@ -228,7 +225,7 @@ public class MainController implements Initializable, InitializationListener, Un private T showView(String fxml) { try { - final FXMLLoader loader = new FXMLLoader(getClass().getResource(fxml), rb, builderFactory); + final FXMLLoader loader = new FXMLLoader(getClass().getResource(fxml), rb); loader.setControllerFactory(controllerFactory); final Parent root = loader.load(); contentPane.getChildren().clear();