Maven和Gradle已经多次回答了这个问题。构建工具比在命令行上更容易,这不仅仅是因为依赖管理。
由于您专门询问命令行,因此这里已经记录了一套完整的说明:https ://openjfx.io/openjfx-docs/#modular 。
非模块化应用
该部分Non-Modular from CLI
涵盖了命令行中的 JavaFX 非模块化项目,并为您提供了创建旧经典 fat jar 的全套指令,其中所有依赖项(包括 JavaFX 的依赖项)都捆绑在一起。
有一条注释警告您不要使用此过程:
警告:这是一个令人沮丧的繁琐且容易出错的手动过程,应避免使用 Maven 的 shade 插件或 Gradle 的 jar 任务,以防 jlink 不适用。
获得 fat jar(它可以是跨平台的)后,您可以分发它,您的用户需要安装并运行 Java:
java -jar myFat.jar
模块化应用
该部分Modular from CLI
涵盖了命令行中的 JavaFX 模块化项目,并在分发方面提到了该jlink
命令的使用,因为它创建了一个可以发送给用户的自定义图像。它不是一个胖罐子,但它允许您向您的用户发送一个压缩包,该压缩包只需要解压缩并运行如下:
hellofx/bin/java -m hellofx/hellofx.HelloFX
在这种情况下,您的用户甚至不需要安装 Java。
通过一些额外的工作,您还可以创建一个批处理,这样您就可以运行:
hellofx
但是,如果您仍然想用模块化应用程序做一个胖罐子,您仍然可以应用与非模块化应用程序完全相同的指令。在这种情况下,您可能必须删除该module-info.java
文件,因为此时它实际上没有意义。
其他选项
您仍然有更多选择来分发您的应用程序。
自定义 Java+JavaFX 镜像
另一个选项,在同一个文档中,自定义 JDK+JavaFX 映像部分,解释了如何创建您自己的包含 JavaFX 的“JDK”。然后您将像往常一样在 Java 8 中生成您的 jar,您将能够使用以下命令运行它:
/path/to/custom/java -jar myFat.jar
请注意,已经有一些捆绑 JavaFX 的 JDK 发行版,比如这个.
jpackage
jpackage
工具还没有,但有一个早期访问:http: //jdk.java.net/jpackage/,它使用的是 Java 13-internal。现有文档解释了生成自定义映像或安装程序所需的命令行选项。
请注意,您仍然可以使用 JavaFX 11 或 12。
构建工具
最后,您仍然可以决定使用构建工具(Maven 或 Gradle),这将在很多方面为您提供真正的帮助。请参阅上面的任何链接问题。