【发布时间】:2016-09-19 16:52:03
【问题描述】:
我一直在尝试将 JavaFX 项目导出为 .jar,但每当我运行它时,都会收到 NullPointerException;据说,它找不到 FXML。我不确定如何处理这个问题,我的项目结构有问题吗?我看了看:FXML layout not loaded when run jar outside Eclipse,但该解决方案似乎对我不起作用,并且有一个不同的问题。
项目托管在:https://github.com/Sunquyman/GameOfLife/tree/master/src
我在尝试运行时收到的堆栈跟踪:
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 main.Main.start(Main.java:21)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)
at java.lang.Thread.run(Thread.java:745)
真的很困惑为什么会这样;如果它在 Eclipse 中运行良好,为什么它会作为导出中断?
提前致谢!
【问题讨论】:
-
当您将其导出为 .jar 时,您是否也包含了那些 .fxml 文件?
-
是的,.jar 包含 FXML。
-
可以肯定的一点是他在抱怨这一行 Parent root = FXMLLoader.load(getClass().getResource("../view/GUI.fxml"));
-
你确定这条线的结构很好吗?
-
我下载了你的代码,它与 (../) 有关。如果你将 .fxml 和 .css 放在文件夹 main 中它可以工作,但我想知道为什么 (../)导致这个问题...