Selaa lähdekoodia

(hopefully) fixed NPE in FXMLLoader.
see http://stackoverflow.com/questions/26434758/npe-in-fxmlloader/26436265#26436265

Sebastian Stenzel 10 vuotta sitten
vanhempi
commit
4d979c26f6

+ 2 - 2
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();

+ 1 - 4
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<Cryptor> 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> 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();