在 JavaFx 捆绑包中减小 JRE 的大小

2022-09-03 03:00:41

我创建了一个JavaFX应用程序,为此,我使用Java运行时的私有副本将其捆绑为一个独立的独立应用程序

但这成为我的应用程序的大小为166MB,其中146 Mb大小为jre。

如何减小应用程序的大小,或者说捆绑包运行时 JRE 的大小?

我在某处读到,某些文件在jre中是可选的,因此我在删除这些文件后尝试运行我的应用程序,但无法运行该应用程序。

那么如何从应用程序的运行时 JRE 中删除未使用的文件/文件夹/模块呢?

据说

缺省情况下,仅包含 Java 运行时的子集。排除一些可选且很少使用的文件以减小包大小,例如所有可执行文件。如果您需要默认情况下未包含的内容,则需要将其复制为后处理步骤。

因此,默认情况下,它不会在jre中添加所有文件,在这种情况下,我的应用程序未运行。应用程序.jar工作正常,因为它正在使用系统 jar。因此,我在后处理步骤中添加所有重新调整的文件。

谢谢


答案 1

Project Jigsaw似乎有一些希望来帮助解决这个问题。

但它似乎最早会出现在Java 9中。

因此,据我从您的帖子中了解到的,您无法使用JavaFX提供的缩小的JRE大小运行您的应用程序。此外,你已尝试此处详细介绍的步骤,但仍然无法运行应用。

许多应用程序都可以在JRE的JavaFX打包中可用有限数量的类下正常运行。也许您可以检查您正在使用的导致此问题的Java库。然后,您可以探索这些库的替代方案。最后,您需要测试这些替代库是否大于或小于 JavaFX 打包中的缩减所提供的空间减少。


答案 2

如果您使用 JavaFX ant 任务来组装捆绑包,则只需将 basedir 属性定义为平台元素中的空字符串,如以下示例所示:

        <fx:platform basedir="">
            <fx:jvmarg value="-Xmx768m" />
        </fx:platform>

这将打包应用程序及其依赖项,但不会打包 JRE 本身。


推荐