从另一个 fxml 文件的控制器加载 fxml 文件时出现空点异常
Null Point Exception when loading fxml file from controller of another fxml file
我遇到了同样的问题!
我正在将一个 ImageView 添加到一个 Button,并使用 SceneBuilder 在 FXML 文件中将图像路径添加到该 ImageView。当我通过 Eclipse IDE 运行 它时,这工作正常,但当 运行 作为 jar 文件时,它工作正常。
从 Button 中删除 ImageView 后,即使 运行 as jar,它也开始正常工作。
但是,现在我在不同的情况下遇到了同样的问题!
我正在使用 3 个 FXML 文件构建整个 window。
- MainWindow(边框窗格)-- 这包含添加到边框窗格顶部位置的菜单栏和工具栏。
- CenterWindow(锚定窗格)
- ButtomWindow(锚定窗格)
在 MainWindow 的控制器中,我试图添加位于不同 fxml 文件中的 CenterWindow 和 ButtomWindow。
但是,NullPointerException
出现在主窗口控制器中我尝试加载 fxml 文件的那一行。它说 Location is required in the exception.
我已经提取了 jar 文件并进行了检查,fxml 文件在 jar 中。
有人可以帮忙吗
包结构:
com.example.app -- contains Main.java which has main() method
com.example.app.controller -- MainWindowController.java, CenterWindowController.java, ButtomWindowController.java
com.example.app.view -- MainWindow.fxml, CenterWindow.fxml, ButtomWindow
在 Main.java 中,我正在加载 MainWindow.fxml,加载正常。然后在 MainWindowController.java 我试图加载 CenterWindow.fxml & ButtomWindow 这给出了异常。
异常日志:
javafx.fxml.LoadException:
file:/C:/Users/a27490989/Documents/NetBeansProjects/AirbusDS/dist/AirbusDS.jar!/
ds/airbus/simulator/view/MainWindow.fxml
at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at ds.airbus.simulator.Main.start(Main.java:22)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication13(Unknown Source)
at com.sun.javafx.application.LauncherImpl$$Lambda/747183799.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait6(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda/584634336.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null4(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda/94326726.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater5(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda/501263526.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null1(Unknown Source)
at com.sun.glass.ui.win.WinApplication$$Lambda/96639997.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at ds.airbus.simulator.controller.MainWindowController.initOutputView(MainWindowController.java:214)
at ds.airbus.simulator.controller.MainWindowController.initialize(MainWindowController.java:204)
... 23 more
我试图使用 getClass().getResource(../view/Output.fxml")
加载 fxml 文件,当从 jar 中 运行 时出现异常。
而是使用 ClassLoader.getSystemResource("com/example/app/view/Output.fxml")
或 getClass().getResource("/com/example/app/view/Output.fxml")
将解决问题。
我遇到了同样的问题!
我正在将一个 ImageView 添加到一个 Button,并使用 SceneBuilder 在 FXML 文件中将图像路径添加到该 ImageView。当我通过 Eclipse IDE 运行 它时,这工作正常,但当 运行 作为 jar 文件时,它工作正常。
从 Button 中删除 ImageView 后,即使 运行 as jar,它也开始正常工作。
但是,现在我在不同的情况下遇到了同样的问题!
我正在使用 3 个 FXML 文件构建整个 window。
- MainWindow(边框窗格)-- 这包含添加到边框窗格顶部位置的菜单栏和工具栏。
- CenterWindow(锚定窗格)
- ButtomWindow(锚定窗格)
在 MainWindow 的控制器中,我试图添加位于不同 fxml 文件中的 CenterWindow 和 ButtomWindow。
但是,NullPointerException
出现在主窗口控制器中我尝试加载 fxml 文件的那一行。它说 Location is required in the exception.
我已经提取了 jar 文件并进行了检查,fxml 文件在 jar 中。
有人可以帮忙吗
包结构:
com.example.app -- contains Main.java which has main() method
com.example.app.controller -- MainWindowController.java, CenterWindowController.java, ButtomWindowController.java
com.example.app.view -- MainWindow.fxml, CenterWindow.fxml, ButtomWindow
在 Main.java 中,我正在加载 MainWindow.fxml,加载正常。然后在 MainWindowController.java 我试图加载 CenterWindow.fxml & ButtomWindow 这给出了异常。
异常日志:
javafx.fxml.LoadException:
file:/C:/Users/a27490989/Documents/NetBeansProjects/AirbusDS/dist/AirbusDS.jar!/
ds/airbus/simulator/view/MainWindow.fxml
at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at ds.airbus.simulator.Main.start(Main.java:22)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication13(Unknown Source)
at com.sun.javafx.application.LauncherImpl$$Lambda/747183799.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait6(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda/584634336.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null4(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda/94326726.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater5(Unknown Source)
at com.sun.javafx.application.PlatformImpl$$Lambda/501263526.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null1(Unknown Source)
at com.sun.glass.ui.win.WinApplication$$Lambda/96639997.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at ds.airbus.simulator.controller.MainWindowController.initOutputView(MainWindowController.java:214)
at ds.airbus.simulator.controller.MainWindowController.initialize(MainWindowController.java:204)
... 23 more
我试图使用 getClass().getResource(../view/Output.fxml")
加载 fxml 文件,当从 jar 中 运行 时出现异常。
而是使用 ClassLoader.getSystemResource("com/example/app/view/Output.fxml")
或 getClass().getResource("/com/example/app/view/Output.fxml")
将解决问题。