JavaFX 可执行 JAR 在加载 FXML 文件时遇到问题,为什么没有加载 FXML?

JavaFX executable JAR runs into problems with loading FXML file, why isn't the FXML being loaded?

下面是异常输出。我认为该程序无法检索 FXML 文件 "home.FXML";它在这一行失败了:

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

这是加载 FXML 的 class 的其余部分。

public class Boorus extends Application{

public static void main(String[] args){
    launch(args);
}

public void start(Stage primaryStage) throws Exception{

    SQLboss.makeTables();
    Parent root = FXMLLoader.load(getClass().getResource("/fxml/home.fxml"));
    Scene scene = new Scene(root);

    primaryStage.setScene(scene);
    primaryStage.setTitle("Boorus");
    primaryStage.show();


}
}

我的项目结构如图所示:

在此处粘贴异常:http://pastebin.com/rWkRuury

您的 JAR 文件中可能没有包含 .fxml 文件。

在构建 JAR 文件的步骤中,检查是否包含且未排除 .fxml 个文件。

如果您想检查 JAR 文件的内容但不确定如何:将扩展名重命名为 .zip(它实际上是一个 zip 文件)并打开它。

正在加载 fxml 文件。问题是坏了。

里面有些东西在罐子里不起作用。除非您向我们展示 fxml,否则没人能帮助您。顺便说一句,当找不到文件时,这将是一个例外:

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 application.Main.start(Main.java:14)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication19(Unknown Source)
        at com.sun.javafx.application.LauncherImpl$$Lambda/1018544248.run(Unknown Source)
        at com.sun.javafx.application.PlatformImpl.lambda$runAndWait2(Unknown Source)
        at com.sun.javafx.application.PlatformImpl$$Lambda/1586270964.run(Unknown Source)

然而你的是:

Caused by: javafx.fxml.LoadException:
fxml/home.fxml

        at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
        at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
        at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)

可以是各种各样的东西,比如e。 G。 this one.