如何使用便携式JRE打包可执行jar?

时间:2009-03-20 03:16:56

标签: java executable-jar

我希望能够通过可执行JAR进行分发,而无需让用户升级到最新版本的JRE。如何将JRE打包到JAR中,以便它们可以在系统上没有安装JRE的情况下运行jar?

3 个答案:

答案 0 :(得分:5)

Java Portable放入子目录并使用批处理/ bash脚本或Launch4j启动jar。

答案 1 :(得分:1)

因为你需要一个jre来执行一个jar,我担心这是不可能的。

我曾使用izpacklaunch4j一起制作一个Windows EXE,可以在我的应用程序中安装jre。

答案 2 :(得分:0)

十年后,我遇到了同样的问题,经过几天的寻找,显然仍然没有解决方案,这是我发现的最好的东西:

捆绑Java(JRE)并使用7zip SFX启动Java应用程序:将Java应用程序转换为可执行的https://mark.koli.ch/bundle-java-the-jre-and-launch-a-java-app-with-7zip-sfx

编辑

我发现了另一种方法,基于Inno Setup和NetBeans,它通常是有关将jar转换为exe的搜索结果。一切都使用Native Packaging in NetBeans IDE完成。

结果是一个独立的.exe安装程序(YourProjectName.exe),该安装程序在 AppData \ Local \ YourProjectName 中创建一个文件夹。在该文件夹中,您将找到启动程序(即.exe)和所有无需安装Java即可运行该软件的必需文件。

您应该使用与文章中所述完全相同的工具版本,否则它将不起作用,至少对我而言不起作用。另一个不清楚的地方是您的项目必须是具有Ant proyect的Java,至少我没有找到如何使用Gradle或Maven进行操作。

此外,我还必须安装Java的 i586 旧版本(我尝试使用JDK 1.8 i586并成功运行),因为JDK 13尝试运行该软件时会导致错误(缺少dll)。尽管我只尝试使用JDK 13 x64,但是架构可能是问题所在,而不是版本。无论如何,与NetBeans 11类似,.exe启动器均无法正常运行,但是在查找并执行.jar时却可以正常运行。所以我最终使用了NetBeans 8。