Ошибка java.lang.reflect.InvocationTargetException при попытке запустить базовый проект javafx - PullRequest
0 голосов
/ 14 марта 2019

Я создал приложение Java FXML в Netbeans, и по умолчанию оно создает сцену с кнопкой. Я пытаюсь запустить его, но он выдает несколько исключений, таких как:

Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: 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$154(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207)
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 timetable.Main.start(Main.java:22)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(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$147(WinApplication.java:177)
... 1 more
Exception running application timetable.Main
C:\Users\This PC\Documents\NetBeansProjects\Timetable\nbproject\build-impl.xml:1052: The following error occurred while executing this line:
C:\Users\This PC\Documents\NetBeansProjects\Timetable\nbproject\build-impl.xml:806: Java returned: 1

Код выглядит следующим образом:

    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();

Я очень новичок в JavaFX, и я не совсем понимаю, откуда эта ошибка.

P.S. Я могу нормально открыть файл fxml с помощью Scene Builder

1 Ответ

0 голосов
/ 15 марта 2019

Поскольку вы писали, что вы новичок в JavaFX, возможно, вы не знаете, что вы можете написать приложение JavaFX без файла .fxml.Также вы упоминаете, что используете Scene Builder .По моему мнению, волшебники не являются хорошим способом для начинающих учиться.Тем не менее, ваша проблема связана с методом getResource(), который не находит ваш файл .fxml.Из трассировки стека, которую вы опубликовали, вы вызываете метод getResource() из метода start() в классе timetable.Main.Поскольку вы передаете имя файла только без пути, файл .fxml должен находиться в том же каталоге, что и файл Main.class, а файл Main.class будет находиться в каталоге timetable.Однако я не могу сказать вам, что является родительским каталогом timetable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...