有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    对于MavenGradle,这个问题已经得到了几次回答。构建工具使事情变得比在命令行上更容易,这不仅仅是因为依赖关系管理

    由于您专门询问了命令行,这里已经有了一整套关于它的说明:https://openjfx.io/openjfx-docs/#modular

    非模块化应用程序

    Non-Modular from CLI节介绍了命令行中的JavaFX非模块化项目,并为您提供了创建旧的经典fat jar的整套说明,其中所有依赖项(包括JavaFX依赖项)都捆绑在一起

    有一条注释警告您不要使用此步骤:

    Warning: This is a discouraged tedious error-prone manual process that should be avoided by using the Maven's shade plugin or the Gradle's jar task, in case jlink is not applicable.

    在您获得fat jar(它可以是跨平台的)之后,您可以分发它,您的用户需要安装并运行Java:

    java -jar myFat.jar 
    

    模块化应用程序

    Modular from CLI节介绍了命令行中的JavaFX模块化项目,并在分发方面提到了jlink命令的使用,因为它创建了一个自定义映像,您可以将其发送给用户。它不是一个胖罐子,但它允许您向用户发送一个只需解压缩并按如下方式运行的zip:

    hellofx/bin/java -m hellofx/hellofx.HelloFX
    

    在这种情况下,用户甚至不需要安装Java

    通过一点额外的工作,您还可以创建一个批处理,这样您就可以运行:

    hellofx
    

    然而,如果你仍然想用模块化应用程序制作胖罐子,你仍然可以从非模块化应用程序中应用完全相同的指令。在这种情况下,您可能必须删除module-info.java文件,因为此时它实际上没有意义

    其他选择

    您还有几个选项可以分发应用程序

    自定义Java+JavaFX图像

    同一文档中的另一个选项Custom JDK+JavaFX image部分解释了如何创建自己的包含JavaFX的“JDK”。然后,您将像往常一样在Java 8中生成jar,并可以使用以下工具运行它:

    /path/to/custom/java -jar myFat.jar
    

    注意,已经有一些JDK发行版捆绑了JavaFX,比如one

    j包装

    jpackage工具还没有出现,但有一个早期的访问:http://jdk.java.net/jpackage/,即使用Java13内部。退出的documentation解释了生成自定义映像或安装程序所需的命令行选项

    请注意,您仍然可以将JavaFX11或12与此配合使用

    构建工具

    最后,您仍然可以决定使用构建工具(Maven或Gradle),这将在许多方面真正帮助您。请参阅上面的任何相关问题