Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation 剥离要与应用程序捆绑的JRE-我可以省略什么?_Installation_Java - Fatal编程技术网

Installation 剥离要与应用程序捆绑的JRE-我可以省略什么?

Installation 剥离要与应用程序捆绑的JRE-我可以省略什么?,installation,java,Installation,Java,我将JRE与我的应用捆绑在一起,只需将文件从$JAVA_HOME/JRE复制到我的应用发行版。这可能与Java的精神背道而驰,但它通过确保我的应用程序运行在测试过的JRE版本上(包括bitness;我使用一些JNI,它要求JRE是32位版本)来减少潜在问题 它工作得很好,但是整个发行版有点大,所以可能会遗漏一些不必要的文件?实际上,$JAVA_HOME/jre/README.txt包含以下建议: 构成JavaSE运行时环境的文件分为 两类:必选和可选。可排除可选文件 从Java SE运行时环境在

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

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

构成JavaSE运行时环境的文件分为 两类:必选和可选。可排除可选文件 从Java SE运行时环境在 供应商的自由裁量权

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

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

令我困惑的是,可选文件列表包括:

bin\java.exe
bin\javaw.exe
bin\javaws.exe
如何选择
java/javaw.exe
呢?
如果没有它们,我该如何启动java应用程序?显然我不知道什么(可能),或者说明根本就错了

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

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


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

虽然这与问题没有严格的关系,但对于删除“不需要的代码”的整个程序(或整个平台)优化,我发现这是一个很好的工具。YMMV.

好的,那么
java.exe
只是一种启动器,有些启动器(可能是launch4j)包含类似的功能?我没有使用launch4j,但他们网站上的图片看起来很像它可以做到这一点,是的。你可能对它感兴趣