JavaFX-使用FXML load()函数的错误

时间:2018-09-11 03:43:35

标签: javafx fxml

我正在使用JavaFX进行第一个项目,遇到错误。在使用打印进行搜索并将以下方法的第一行拆分为较小的语句后,我发现该错误是由load()方法引起的。

public Scene generateTodayGUI() throws Exception
{
    Parent root = FXMLLoader.load(getClass().getResource("../fxml/TodayScene.fxml"));

    todayScene = new Scene(root, 450, 600);

    return todayScene;
}

我尝试打印有关异常的信息,它使我可以确定发生错误的位置。该方法应位于FXML文件的第9行。下面是产生错误的完整代码行。

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gui.TodayGUI">

我已经验证了控制器类的声明正确,并且在我广泛地寻找问题的解决方案时,发现某些人的“ xmlns”存在问题,因此我的猜测也就是这里的问题。再说一次,经过数小时的头部抓挠,没有一种适用于其他人的解决方案对我有用,在这里我要向StackOverflow寻求帮助。

谢谢你的放心!

PS:我正在使用IntelliJ IDEA

编辑:异常的类型为javafx.fxml.LoadException,错误消息什么也没有说。这是堆栈跟踪:

        at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625)
        at javafx.fxml/javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:105)
        at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:941)
        at javafx.fxml/javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:980)
        at javafx.fxml/javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:227)
        at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:752)
        at javafx.fxml/javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2722)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2552)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3253)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3210)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3179)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3152)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3129)
        at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3122)
        at gui.TodayGUI.generateTodayGUI(TodayGUI.java:44)
        at gui.MainGUI.initSubMenus(MainGUI.java:84)
        at gui.MainGUI.<init>(MainGUI.java:47)
        at core.Main.start(Main.java:38)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:919)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(PlatformImpl.java:449)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
        at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
        at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.InstantiationException: gui.TodayGUI 
        at java.base/java.lang.Class.newInstance(Class.java:547) 
        at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:936) 
        ... 25 more 
Caused by: java.lang.NoSuchMethodException: gui.TodayGUI.() 
        at java.base/java.lang.Class.getConstructor0(Class.java:3302) 
        at java.base/java.lang.Class.newInstance(Class.java:532)
        ... 26 more

编辑2:这是TodayGUI类。我之所以不包括进口商品,是因为它们不会引起此错误。

package gui;

这是类声明

public class TodayGUI implements Initializable

属性

public Stage window;
public Day day;
public Boolean isSaved;
public ChoiceBox<String> choiceBox;
public TableView<Meal> meals;
public TableColumn<Meal, String> mealDescriptionColumn, mealTypeColumn;
public ListView<String> exercisesList;
public TextField mealDescription, exerciseDescription, sleepHours, sleepMins;
public Scene mainScene;
public Scene todayScene;
public LinkedList<Meal> food;
public LinkedList<Meal> exercises;
public int hoursSleep, minutesSleep;

还有构造函数

public TodayGUI(Stage newStage, Day newDay, Scene newMainScene)
{
    this.day = newDay;
    this.window = newStage;
    this.mainScene = newMainScene;
}

我还要感谢到目前为止回答的每个人。

0 个答案:

没有答案