javafx - 减少 native 部署的 JavaFX 应用程序的大小

标签 javafx javafx-8

我正在使用 JavaFX 编写一个应用程序,并且担心我将 native 部署的 .EXE 文件的大小。我的应用程序并不是那么大(总共不到 5M),但 Java 运行时使最终安装的目录远超过 100M,并压缩为可分配的 44M 文件。

我一直在 64 位 Windows (Java SE 8u77) 上运行测试。为了使最终的可执行文件更小,我删除了 JRE 中不必要的部分,如下所述:http://www.oracle.com/technetwork/java/javase/jre-8-readme-2095710.html

这是我发现的:

  • 完整的 JRE:45.0 M
  • 剥离的 JRE:44.0 M

有人对如何使可分发的 .EXE 变得更小有任何想法吗?我发现的所有信息都至少有两三年的历史,也许不再那么相关了。我觉得 JRE 可以提供更多功能,但这似乎会违反许可。

有人有使用任何非 Oracle 发行版或任何其他方法来缩小 JavaFX 应用程序的经验吗?

最佳答案

使用javapackager时,您可以设置不包含JRE。这使得 native 启动器使用本地安装的 JRE(这可能不是最好的解决方案)。

使用javafx-maven-plugin时,只需设置一个bundlerArgument:

<configuration>
    <mainClass>com.zenjava.test.Main</mainClass>
    <bundleArguments>
        <runtime /> <!-- dont include JRE, use installed one -->
    </bundleArguments>
</configuration>

使用javafx-gradle-plugin时,只需将运行时设置为NULL即可:

jfx {
    verbose = true
    mainClass = 'your.application.appname'
    appName = 'appname'
    jfxMainAppJarName = 'appname.jar'
    vendor = "My Company"
    bundleArguments = [
        runtime: null
    ]
}

当使用javapacker本身的ant风格的xml文件时,只需设置:

<fx:bundleArgument name="runtime" value="" />

免责声明:我是 javafx-maven-plugin 的维护者以及 javafx-gradle-plugin 的创建者.

关于javafx - 减少 native 部署的 JavaFX 应用程序的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538200/

相关文章:

JavaFX UI 元素未显示在 Stage 中

java - 如何正确处理 TextField 绑定(bind)并将节点引用与任务分开

javaFX: ListView 选择模型内的单选按钮

java - 如何在 JavaFX 中的 ListView 内设置自定义控件的样式

Javafx 应用程序在一段时间后自动崩溃

java - 以编程方式最小化和最大化 Javafx 应用程序

Javafx - 将项目添加到与另一个类文件夹不同的类文件夹中的可观察列表的正确方法是什么

java - 如何在 JavaFX 2 中打开另一个窗口?

JavaFX 属性 : Overriding getBean() method?

javafx-8 - 如何使用 JavaFX CheckBoxTreeTableCell?