17

我创建了一个 JavaFX 应用程序,为此我将它捆绑为一个自包含的独立应用程序,使用 Java Runtime 的私有副本

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

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

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

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

据说_ _

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

所以默认情况下它不会在 jre 中添加所有文件,在这种情况下我的应用程序没有运行。Application.jar 工作正常,因为它正在使用系统 jar。所以我在后处理步骤中添加了所有剩余的文件。

谢谢

4

3 回答 3

2

Project Jigsaw 似乎对此有所帮助。

但它看起来最早会出现在 Java 9 中。

据我从您的帖子中了解到,您无法使用 JavaFX 提供的减小的 JRE 大小来运行您的应用程序。此外,您尝试了此处详述的步骤,但仍然无法运行您的应用程序。

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

于 2013-06-25T14:02:21.513 回答
0

不幸的是,Java 8 无法删除未使用的文件。

要减小应用程序大小,您可以使用本机操作系统安装程序。

Windows Exe 安装程序的大小应该在 50 MB 左右,Mac OS X DMG 安装程序的大小应该在 60MB 左右。

于 2015-03-06T13:38:19.473 回答
0

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

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

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

于 2014-04-10T19:18:55.440 回答