Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根';Java 8 Eclipse没有设置错误_Java_Macos_Javafx_Javafx 8_Java 8 - Fatal编程技术网

根';Java 8 Eclipse没有设置错误

根';Java 8 Eclipse没有设置错误,java,macos,javafx,javafx-8,java-8,Java,Macos,Javafx,Javafx 8,Java 8,最近,我为我的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.f

最近,我为我的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.<init>(GameSetupController.java:37)
at dominion.application.controller.DashboardController.<init>(DashboardController.java:40)
at dominion.application.controller.MainController.<init>(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)
javafx.fxml.LoadException:尚未设置根目录。加载前使用方法setRoot()。
/Users/jonathan/Projects/Dominion/target/classes/Dominion/application/controller/main\u overview\u tab.fxml:13
位于javafx.fxml.fxmloader.constructLoadException(fxmloader.java:2613)
在javafx.fxml.fxmloader.access$100(fxmloader.java:104)
在javafx.fxml.fxmloader$RootElement.constructValue(fxmloader.java:1320)
在javafx.fxml.fxmloader$ValueElement.processStartElement(fxmloader.java:740)
在javafx.fxml.fxmloader.processStartElement(fxmloader.java:2723)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2527)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2441)
在javafx.fxml.fxmloader.load(fxmloader.java:2409)
位于dominion.application.controller.MainOverviewTab.initView(MainOverviewTab.java:64)
位于dominion.application.controller.MainOverviewTab.initializeController(MainOverviewTab.java:55)
位于dominion.application.controller.GameSetupController.(GameSetupController.java:37)
位于dominion.application.controller.DashboardController.(DashboardController.java:40)
位于dominion.application.controller.MainController.(MainController.java:37)
位于dominion.application.dominion.start(dominion.java:18)
位于com.sun.javafx.application.launchempl$8.run(launchempl.java:837)
位于com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335)
位于com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
位于com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
位于java.security.AccessController.doPrivileged(本机方法)
位于com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
位于com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:95)
javafx.fxml.LoadException:尚未设置根目录。加载前使用方法setRoot()。
/Users/jonathan/Projects/Dominion/target/classes/Dominion/application/controller/players_tab.fxml:13
位于javafx.fxml.fxmloader.constructLoadException(fxmloader.java:2613)
在javafx.fxml.fxmloader.access$100(fxmloader.java:104)
在javafx.fxml.fxmloader$RootElement.constructValue(fxmloader.java:1320)
在javafx.fxml.fxmloader$ValueElement.processStartElement(fxmloader.java:740)
在javafx.fxml.fxmloader.processStartElement(fxmloader.java:2723)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2527)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2441)
在javafx.fxml.fxmloader.load(fxmloader.java:2409)
位于dominion.application.controller.PlayersTab.initView(PlayersTab.java:46)
我的应用程序在Java7版本40和51下运行良好,但在Java8版本124下运行不好。以下是我的主\u overview\u tab.fxml文件的前几行:

<fx:root type="javafx.scene.layout.AnchorPane" id="AnchorPane" fx:id="content" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-1.0" minWidth="-1.0" prefHeight="600.0" prefWidth="1000.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
<children>
<VBox prefHeight="-1.0" prefWidth="-1.0" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
  <children>
    <HBox prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
      <children>
        <VBox id="playersVBox" prefHeight="-1.0" prefWidth="-1.0" spacing="40.0" HBox.hgrow="ALWAYS">
          <children>
            <Label text="Players">
              <font>
                <Font size="18.0" fx:id="x3" />
              </font>
              <VBox.margin>
                <Insets />
              </VBox.margin>
            </Label>

这个问题非常相似,但似乎对我的情况没有帮助:

编辑:加载FXML的代码

public class MainOverviewTab extends Tab implements IObserver {
  @FXML public AnchorPane content;

  private SingleGameSettings gameSettings;
  private List<ImageView> 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);

  }
  ...
public class main概览选项卡扩展选项卡实现IObserver{
@FXML公共锚烷含量;
私人单机游戏设置;
私有列表概述图像;
公共主概览选项卡(){
}
public void initializeController(SingleGameSettings游戏设置){
this.gameSettings=游戏设置;
this.gameSettings.registerObserver(this);
initView();
}
私有void initView(){
FXMLLoader FXMLLoader=新的FXMLLoader(getClass().getResource(“main_overview_tab.fxml”);
fxmlLoader.setRoot(内容);
fxmlLoader.setController(此);
试一试{
fxmloader.load();
}
捕获(例外e){
e、 printStackTrace();
}
这个.setText(“概览游戏”);
这个.setContent(content);
}
...

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


显示加载fxml的java代码从fxml中删除解决了问题:它工作正常我从场景构建中取消选中删除了它也工作正常。请确保在Eclipse上执行Project>Clean..。谢谢!