JavaJDK11/JavaFX:如何在没有构建/部署管理的情况下制作胖罐子?
我认为不用说,我应该能够使用Oracle自己的JDK和JavaFX(来自gluonhq)来构建一个用户可以直接使用的可分发jar文件
经过详尽的搜索、大量阅读(过去几个月里24小时或更长时间),最后是谷歌搜索查询:
how to make a fat jar -maven -gradle -scala -eclipse -ant -docker -hadoop -netbeans -jerkar -phy -mozni -yogurt -pizza - throwing -python -bacon
我绝对走到了路的尽头。这到底是为什么这么多工作?我如何构建一个JavaFX应用程序,并将其提供给那些想要实际使用它的人,而不知道除了如何使用应用程序本身之外的其他任何事情
# 1 楼答案
对于Maven和Gradle,这个问题已经得到了几次回答。构建工具使事情变得比在命令行上更容易,这不仅仅是因为依赖关系管理
由于您专门询问了命令行,这里已经有了一整套关于它的说明:https://openjfx.io/openjfx-docs/#modular
非模块化应用程序
第
Non-Modular from CLI
节介绍了命令行中的JavaFX非模块化项目,并为您提供了创建旧的经典fat jar的整套说明,其中所有依赖项(包括JavaFX依赖项)都捆绑在一起有一条注释警告您不要使用此步骤:
在您获得fat jar(它可以是跨平台的)之后,您可以分发它,您的用户需要安装并运行Java:
模块化应用程序
第
Modular from CLI
节介绍了命令行中的JavaFX模块化项目,并在分发方面提到了jlink
命令的使用,因为它创建了一个自定义映像,您可以将其发送给用户。它不是一个胖罐子,但它允许您向用户发送一个只需解压缩并按如下方式运行的zip:在这种情况下,用户甚至不需要安装Java
通过一点额外的工作,您还可以创建一个批处理,这样您就可以运行:
然而,如果你仍然想用模块化应用程序制作胖罐子,你仍然可以从非模块化应用程序中应用完全相同的指令。在这种情况下,您可能必须删除
module-info.java
文件,因为此时它实际上没有意义其他选择
您还有几个选项可以分发应用程序
自定义Java+JavaFX图像
同一文档中的另一个选项Custom JDK+JavaFX image部分解释了如何创建自己的包含JavaFX的“JDK”。然后,您将像往常一样在Java 8中生成jar,并可以使用以下工具运行它:
注意,已经有一些JDK发行版捆绑了JavaFX,比如one
j包装
jpackage
工具还没有出现,但有一个早期的访问:http://jdk.java.net/jpackage/,即使用Java13内部。退出的documentation解释了生成自定义映像或安装程序所需的命令行选项请注意,您仍然可以将JavaFX11或12与此配合使用
构建工具
最后,您仍然可以决定使用构建工具(Maven或Gradle),这将在许多方面真正帮助您。请参阅上面的任何相关问题