【发布时间】:2020-03-29 23:03:02
【问题描述】:
自从我尝试导出一个用 JavaFX 制作的非常简单的项目以来已经有几天了,但我有一个非常令人沮丧的问题:要运行 jar,我需要打开 cmd 导航到 jdk 文件夹并执行以下代码java --module-path %path_to_JavaFX_on_my_pc% --add modules=javafx.controls,javafx.fxml,javafx.graphics -jar %path_to_jar% 我指向 pc 上的 jfx 文件夹并添加必要的模块来运行 jar。
使用 java java -jar %path_to_jar% 运行 jar 会导致以下错误:错误:JavaFX 运行时组件丢失,并且是运行此应用程序所必需的
该项目是模块化的,使用以下代码声明了 module-info.java:
module Timer {
requires java.prefs;
requires com.jfoenix;
requires javafx.base;
requires javafx.controls;
requires javafx.fxml;
requires javafx.graphics;
requires javafx.media;
requires javafx.web;
requires javafx.swing;
opens main;
exports main;
}
在导出工件时,我包含了 javafx 中包含的所有 .jar,那么我为什么要在外部指向它呢?
当我通过 IDE 运行应用程序时,它运行良好,我什至不必添加 VM 选项。
我的目标是创建一个可以实际分发的应用程序,用户无需具备任何基础知识即可运行它,无需 jre、jdk、jfx、cmd 代码等...只需单击两次即可完成.
问题是:我如何生成一个可执行文件,可以像在 *any pc 上的 pc 上的任何其他应用程序一样单击 2 次打开?
【问题讨论】:
-
您是否看到了像这里这样的现有答案:stackoverflow.com/questions/30145772/…?
-
我正在寻找最简单的方法来做到这一点,我的项目不使用 gradle 或 maven,所以 JavaPackager 似乎是最好的选择,但这个工具似乎已经灭绝了......有些软件可以将我的项目转换为 .jar、.exe 可执行文件或在 Windows 上运行的任何其他文件吗?实际上我不确定如何继续,如上所述,我可以创建一个 .jar 但它只能由 cmd 使用命令 --add-modules .... 执行,所以使用工具将此 jar 转换为另一种类型的可执行文件似乎无法解决问题
-
您可以使用 exe4j 或 launch4j 并通过这些工具的配置提供所需的选项。但你是对的,没有简单的方法。 JavaFX 很难打包,尤其是如果您不使用 Maven 或 Gradle。
-
我已经将 Launch4J 与 java Swing 一起使用,效果很好。但是我不确定如何在这里进行,有什么提示吗?
-
“JavaPackager [...] 似乎已经灭绝”——如果使用 Java 14,请查看
jpackage。
标签: javafx