Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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
JAVAFX:FXML文件的加载异常_Java_Javafx - Fatal编程技术网

JAVAFX:FXML文件的加载异常

JAVAFX:FXML文件的加载异常,java,javafx,Java,Javafx,我已经在预览帖子中搜索了解决方案,但没有找到。我使用javafx已经有一段时间了,但是没有使用fxml。现在我的项目越来越大,我后悔以前没有使用过fxml。我正在做一些测试,但我无法运行我的应用程序。我的项目结构如下: src| JavaFiles| GUIManagement| GUIManagement.java main.java Resources| CSS| FXML|MainGUI.fxml 在下面的示

我已经在预览帖子中搜索了解决方案,但没有找到。我使用javafx已经有一段时间了,但是没有使用fxml。现在我的项目越来越大,我后悔以前没有使用过fxml。我正在做一些测试,但我无法运行我的应用程序。我的项目结构如下:

src|
    JavaFiles|
        GUIManagement| GUIManagement.java
        main.java
    Resources|
        CSS|
        FXML|MainGUI.fxml
在下面的示例代码中: main.java:

public class MainManagement {

    public static void main(String[] args) {
        GUIManagement guiApp = new GUIManagement();
        guiApp.runGUI();
    }
}
GUIManagement.java:

public class GUIManagement extends Application implements Initializable {

    // GRAPHICS ELEMENTS
    @FXML private Button btnSideBoard;
    @FXML private Button btnShoppingList;
    @FXML private Button btnStatistics;

    public void runGUI() {
        Application.launch();
    }

    @FXML
    private void test() {
        System.out.println("Click");
    }

    @Override
    public void start(Stage primaryStage) throws IOException {
        AnchorPane root = 
            FXMLLoader.load(getClass().getResource("../../Resources/FXMLFiles/MainGUI.fxml"));
        Scene newScene = new Scene(root);
        primaryStage.setScene(newScene);
        primaryStage.show();
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        btnStatistics.setText("Cambio");
    }
}
MainGUI.fxml:

<?xml version="1.0" encoding="UTF-8"?>
<?import java.net.URL?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>

<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="JavaFiles.GUIManagement.MainMenuGUI">
   <children>
      <VBox id="verticalPane" alignment="CENTER" layoutX="174.0" layoutY="8.0" prefHeight="486.0" prefWidth="251.0" styleClass="background">
         <children>
            <Label id="title" text="Shop" />
            <Button fx:id="btnSideBoard" mnemonicParsing="false" styleClass="mainButton" text="Sideboard" />
            <Button mnemonicParsing="false" styleClass="mainButton" text="Shopping List" />
            <Button disable="true" mnemonicParsing="false" styleClass="mainButton" stylesheets="@../CSS/CSS_generic_setup.css" text="Statistics" />
         </children>
         <stylesheets>
            <URL value="@../CSS/CSS_generic_setup.css" />
            <URL value="@../CSS/CSS_main_menu.css" />
         </stylesheets>
      </VBox>
   </children>
</AnchorPane>

最后,我得到的错误是:

Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$1(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: javafx.fxml.LoadException: 
/D:/Projects/StuffManagement/out/production/StuffManagement/Resources/FXMLFiles/MainGUI.fxml:9

at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:932)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971)
at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
at JavaFiles.GUIManagement.GUIManagement.start(GUIManagement.java:37)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$4(WinApplication.java:186)
... 1 more
Caused by: java.lang.InstantiationException: JavaFiles.GUIManagement.MainMenuGUI
at java.lang.Class.newInstance(Class.java:427)
at sun.reflect.misc.ReflectUtil.newInstance(ReflectUtil.java:51)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:927)
... 22 more
Caused by: java.lang.NoSuchMethodException: JavaFiles.GUIManagement.MainMenuGUI.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
... 24 more
应用程序启动方法中出现异常 线程“main”java.lang.RuntimeException中的异常:应用程序启动方法中的异常 位于com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:917) 在com.sun.javafx.application.launchempl.lambda$launchApplication$1(launchempl.java:182) 运行(Thread.java:748) 原因:javafx.fxml.LoadException: /D:/Projects/StuffManagement/out/production/StuffManagement/Resources/FXMLFiles/MainGUI.fxml:9 位于javafx.fxml.fxmloader.constructLoadException(fxmloader.java:2601) 在javafx.fxml.fxmloader.access$700(fxmloader.java:103) 在javafx.fxml.fxmloader$ValueElement.processAttribute(fxmloader.java:932)中 在javafx.fxml.fxmloader$InstanceDecrationElement.processAttribute中(FXMLLoader.java:971) 在javafx.fxml.fxmloader$Element.processStartElement(fxmloader.java:220) 在javafx.fxml.fxmloader$ValueElement.processStartElement(fxmloader.java:744) 在javafx.fxml.fxmloader.processStartElement(fxmloader.java:2707) 在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2527) 在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2441) 在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3214) 在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3175) 在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3148) 在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3124) 在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3104) 在javafx.fxml.fxmloader.load(fxmloader.java:3097) 位于JavaFiles.GUIManagement.GUIManagement.start(GUIManagement.java:37) 在com.sun.javafx.application.launchempl.lambda$launchApplication1$8(launchempl.java:863) 位于com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326) 位于com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295) 位于java.security.AccessController.doPrivileged(本机方法) 位于com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294) 位于com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:95) 在com.sun.glass.ui.win.WinApplication.\u runLoop(本机方法) 位于com.sun.glass.ui.win.WinApplication.lambda$null$4(WinApplication.java:186) ... 还有一个 原因:java.lang.InstanceException:JavaFiles.GUIManagement.MainMenuGUI 位于java.lang.Class.newInstance(Class.java:427) 位于sun.reflect.misc.reflectil.newInstance(reflectil.java:51) 在javafx.fxml.fxmloader$ValueElement.processAttribute(fxmloader.java:927)中 ... 还有22个 原因:java.lang.NoSuchMethodException:JavaFiles.GUIManagement.MainMenuGUI。() 位于java.lang.Class.getConstructor0(Class.java:3082) 位于java.lang.Class.newInstance(Class.java:412) ... 还有24个 有人能帮我解决这个问题吗? 多谢各位

Marco

删除SceneBuilder中的“使用fx:root构造”。
这会引发javafx.fxml.fxmloader.constructLoadException(fxmloader.java:2601)异常

我对javafx还是个新手,但是你确定有一个
launch()
方法不带参数吗?问题在于你的控制器,你还没有发布它。它不是公共的,或者没有公共的无参数构造函数。资源名称不正确,但这不是问题中出现异常的原因。请..您有
fx:controller=“JavaFiles.GUIManagement.MainMenuGUI”FXML文件中的
,以及由以下原因引起的:java.lang.NoSuchMethodException:JavaFiles.GUIManagement.MainMenuGUI。()。它告诉您控制器类没有无参数构造函数。请提供一个。这是完全不正确的,通过查看FXML或堆栈跟踪可以看出。