(hopefully) fixed NPE in FXMLLoader.

see http://stackoverflow.com/questions/26434758/npe-in-fxmlloader/26436265#26436265
This commit is contained in:
Sebastian Stenzel
2015-02-22 12:36:17 +01:00
parent 4776dbf603
commit 4d979c26f6
2 changed files with 3 additions and 6 deletions

View File

@@ -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();

View File

@@ -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();