Я делаю свой первый проект с использованием JavaFX и столкнулся с ошибкой. После некоторого поиска с использованием print и разбиения первой строки метода ниже на более мелкие операторы я обнаружил, что ошибка была вызвана методом load ().
public Scene generateTodayGUI() throws Exception
{
Parent root = FXMLLoader.load(getClass().getResource("../fxml/TodayScene.fxml"));
todayScene = new Scene(root, 450, 600);
return todayScene;
}
Я попытался распечатать информацию об исключении, и оно дало мне место, где произошла ошибка. Он расположен в 9-й строке файла FXML, который должен загружаться описанным выше методом. Ниже приведена полная строка кода, которая генерирует ошибку.
<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;
}
Я также хотел бы поблагодарить всех, кто ответил до сих пор.