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