我在电脑上有Launch4J,它是一个很棒的程序。其中一个我感兴趣的功能是可以将JRE打包到通用的.EXE文件中。但是,我找不到任何说明文档来描述如何进行此操作。
我该如何将JRE与EXE一起打包?此外,我从哪里获取一个紧凑、便携的JRE来运行?Oracle上的下载链接都是安装程序包。
我在电脑上有Launch4J,它是一个很棒的程序。其中一个我感兴趣的功能是可以将JRE打包到通用的.EXE文件中。但是,我找不到任何说明文档来描述如何进行此操作。
我该如何将JRE与EXE一起打包?此外,我从哪里获取一个紧凑、便携的JRE来运行?Oracle上的下载链接都是安装程序包。
经过多次尝试,我最终找到了一种解决方法来将JRE打包到我的应用程序中:
我将我的应用程序打包为一个zip文件,并在其中包含以下文件夹:
containerFolder
|- jre
|-bin (in bin there is java.exe)
|-lib
|- cfg (to save the user configuration, but it's not needed)
|- bin (my application with the .exe and the .jar and all the other stuff)
在Launch4j的xml文件中,我这样配置JRE:
<jre>
<path>../jre</path>
<opt>-DgvSIG.confDir=../cfg</opt>
</jre>
这里的诀窍在于路径不是指向java.exe文件。指向jre的路径相对于.exe文件的位置,并且应该指向java.exe文件之前的一个文件夹。
我正在使用的jre文件夹只是从Windows系统中安装的jre文件夹复制&粘贴过来的。
我按照以下步骤操作,使用Launch4j 3.11版本成功:
在Launch4j中设置所有必要选项后,将“Bundled JRE path”设置为“jre”
我刚刚完成了这个。上面清楚地描述了捆绑jre的方法。
在这里,我分享一下我曾经苦苦挣扎的经验。如果你想在使用launch4j创建包装器exe之后创建安装程序exe,请注意launch4j和jre的文件路径。这是我用来解决问题的路径:
launch4j、bin/jre、resources/bin/jre。
launch4j、bin和resources处于同一级别。
上述提到的答案对我无效。我正在使用JDK 20。我所做的:
一个简单的文件夹视图:
appFolder
|- myJdk
|- all contents from my jdk folder, installed on the machine. (The only folder I could remove was the jmods. All the rest were needed)
|- jar file
JRE通常可以在SDK文件夹中找到。是的,在线链接是安装程序,但一旦安装完成,JRE现在位于您的本地磁盘上。我的JRE位于
${jdk folder}\jre
如果你真的想要,JRE 中不需要的部分可能可以手动删除(我不确定在线上有什么可用资源)。