gpt4 book ai didi

java - 使用 JavaFX 14 和 FXML 文件构建独立 JAR

转载 作者:行者123 更新时间:2023-12-02 08:47:15 25 4
gpt4 key购买 nike

我已经搜索了几个小时试图找到我正在寻找的内容,但关于最新版本的 JavaFX 的信息似乎很少。

对于一个项目,我需要提供一个独立可执行 JAR 文件,该文件可以在任何安装了 java 的计算机上运行。我使用的是 JDK 14 和 JavaFX 14,并且没有使用 Maven 或 Gradle(尽管如果其中之一是必要的,我没有理由不能使用它们)。

我的项目在 IntelliJ 中运行良好,VM 选项指向我的 JavaFX lib 文件夹,但我找不到如何正确构建可以在其他系统没有 javaFX 的情况下分发和执行的 JAR。即,我希望将 JavaFX、我的 FXML 文件以及其他依赖项(包括 JDBC)捆绑在 JAR 中。这可能吗?

请告诉我是否需要提供更多信息。谢谢大家。

最佳答案

我找到了弗兰肯斯坦解决方案!

IntelliJ 可以将外部库从 Maven 存储库添加到常规 Java 项目,而无需实际将其转换为 Maven 项目(事实上,我已经在 J​​Unit 中使用它)我添加了 JavaFX 依赖项,如下所示:

首先,我删除了现有的依赖项并删除了虚拟机选项(将不再需要这些)

项目设置 -> 库 -> + -> 来自 Maven

并添加:

  • org.openjfx:javafx-base:14
  • org.openjfx:javafx-controls:14
  • org.openjfx:javafx-fxml:14
  • org.openjfx:javafx-graphics:14

我必须在每个之间点击“应用”,否则不会下载它们

然后我在 IntelliJ 中以正常方式创建了一个 JAR:

项目设置 -> Artefacts -> JAR -> 来自具有依赖项的模块

将所有可用元素添加到输出根

构建 -> 构建工件

运行此程序后,我收到一条错误消息,告诉我它正在寻找 FXML 文件,因此我将 FXML 复制到同一位置,令我惊讶的是,它运行得完美无缺! 我现在计划在我的项目中创建一个类,以便在 JavaFx 代码运行之前生成 FXML 文件,这样我仍然可以分发单个 JAR。

<小时/>

编辑(感谢@Slaw的帮助)

在分析 JAR 后,我发现我的 FXML 文件确实捆绑在里面。访问这些实际上相当简单,只需将任何 FXMLLoader setLocation 调用更改为:

myFxmlLoader.setlocation(MyClass.class.getResource("myFXMLFile.fxml"));

而且它运行完美!

也感谢大家的建议!

关于java - 使用 JavaFX 14 和 FXML 文件构建独立 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60994105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com