剥离JRE与应用程序捆绑在一起 - 我可以省略什么?

Joo*_*kka 9 java installation

我一直在将JRE与我的应用程序捆绑在一起,只需将文件复制$JAVA_HOME/jre到我的应用程序的发行版即可.这可能违背了Java的精神,但它通过确保我的应用程序在经过测试的JRE版本上运行来减少潜在问题(包括比特;我使用一些JNI,它要求JRE是32位版本).

它工作正常,但整个发行版有点大,所以可能会遗漏一些不必要的文件?确实,$JAVA_HOME/jre/README.txt包含以下建议:

组成Java SE运行时环境的文件分为两类:必需和可选.可供供应商自行决定从Java SE运行时环境的重新分发中排除可选文件.

以下部分包含可以选择从Java SE运行时环境的重新分发中省略的文件和目录的列表.不在这些可选文件列表中的所有文件都必须包含在运行时环境的重新分发中.

...当使用自定义启动器将Microsoft Windows上的JRE重新分发为私有应用程序运行时(其他应用程序无法访问)时,以下文件也是可选的.这些是用于Internet Explorer和Mozilla系列浏览器中的Java支持的库和可执行文件; 私有JRE重新分发中不需要这些文件.

让我感到困惑的是,可选文件列表包括:

bin\java.exe
bin\javaw.exe
bin\javaws.exe
Run Code Online (Sandbox Code Playgroud)

怎么java/javaw.exe可选?如果没有它们我应该如何启动Java应用程序?显然我不知道某些事情(可能),或者指示是完全错误的.

Thi*_*ilo 2

当使用自定义启动器将 Microsoft Windows 上的 JRE 作为私有应用程序运行时(其他应用程序无法访问)重新分发时,以下文件也是可选的。

如果您将 JVM(通过链接其共享库)嵌入到您自己的应用程序中,则不需要独立的启动程序可执行文件。例如,我认为 Eclipse 就是这样工作的。

如果您的应用程序使用 java 可执行文件(例如通过批处理文件),那么您当然需要它们。