Root尚未设置Java 8 Eclipse的错误

最近我为我的JavaFX应用程序安装了Java 8 build 124,我开始收到这些错误:

javafx.fxml.LoadException: Root hasn't been set. Use method setRoot() before load. /Users/jonathan/Projects/Dominion/target/classes/dominion/application/controller/main_overview_tab.fxml:13 at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2613) at javafx.fxml.FXMLLoader.access$100(FXMLLoader.java:104) at javafx.fxml.FXMLLoader$RootElement.constructValue(FXMLLoader.java:1320) at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:740) at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2723) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) at dominion.application.controller.MainOverviewTab.initView(MainOverviewTab.java:64) at dominion.application.controller.MainOverviewTab.initializeController(MainOverviewTab.java:55) at dominion.application.controller.GameSetupController.(GameSetupController.java:37) at dominion.application.controller.DashboardController.(DashboardController.java:40) at dominion.application.controller.MainController.(MainController.java:37) at dominion.application.Dominion.start(Dominion.java:18) at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837) at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335) at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301) at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) javafx.fxml.LoadException: Root hasn't been set. Use method setRoot() before load. /Users/jonathan/Projects/Dominion/target/classes/dominion/application/controller/players_tab.fxml:13 at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2613) at javafx.fxml.FXMLLoader.access$100(FXMLLoader.java:104) at javafx.fxml.FXMLLoader$RootElement.constructValue(FXMLLoader.java:1320) at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:740) at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2723) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) at dominion.application.controller.PlayersTab.initView(PlayersTab.java:46) 

我的应用程序在Java 7 build 40和51下运行得很好,但在Java 8 build 124下没有。以下是main_overview_tab.fxml文件的前几行:

          

这个问题非常相似,但似乎没有帮助我的情况: JavaFX SceneBuilder 2.0没有为fx:root作为主要布局标签的自定义组件打开FXML 。

编辑 :加载FXML的代码

 public class MainOverviewTab extends Tab implements IObserver { @FXML public AnchorPane content; private SingleGameSettings gameSettings; private List overviewImages; public MainOverviewTab() { } public void initializeController(SingleGameSettings gameSettings) { this.gameSettings = gameSettings; this.gameSettings.registerObserver(this); initView(); } private void initView() { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("main_overview_tab.fxml")); fxmlLoader.setRoot(content); fxmlLoader.setController(this); try { fxmlLoader.load(); } catch (Exception e) { e.printStackTrace(); } this.setText("Overview Game"); this.setContent(content); } ... 

从场景生成器 – >文档 – >控制器中取消选中fx:root构造,或从fxml文件的代码中删除