如何加载 *.jar 文件之外的 FXML 文件

How to load FXML file which is out of *.jar file

这是我在 Stack 上的第一个 post,我一直在寻找我的问题的答案,但我没有找到任何有用的东西。 我正在学习 Java,所以要温柔 ;)

我的问题是,我不想将 "jar" 中的所有内容制作成一个文件。我必须加载不在 *.jar 文件中的 FXML 文件。 例如: 我正在制作我的 JavaFXMLApplication 文件夹中的 FXML 文件,我 运行 "JavaFXApplication.jar" 文件和这个应用程序使用我刚制作的 FXML。

希望我描述清楚:)

编辑: 我找到了另一个解决方案,对我来说效果更好...

    File file = new File("absolutPathToFile\FXMLDocument.fxml");
    InputStream is = new BufferedInputStream(new FileInputStream(file));

    Pane root = new Pane();

    FXMLLoader loader = new FXMLLoader();
    try
    {
        root = loader.load(is);

    }
    catch (IOException ex)
    {
        System.out.println(ex);
    }

希望对大家有所帮助

干杯:)

您可以从任何地方加载 FXML 文件。一种可能性是使用将 URL 作为参数的加载命令。您可以像这样轻松获得 URL:

    try {
        File file = new File("../../FXMLDocument.fxml");
        if (file.canRead()) {
            URL url = file.toURI().toURL();
            Pane root = FXMLLoader.load(url);
        } else {
            System.err.println("File does not exist.");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }