13

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

4

3 回答 3

6

Java Portable放在一个子目录中,然后使用批处理/bash 脚本或Launch4j启动您的 jar 。

于 2010-08-03T05:23:40.493 回答
1

由于您需要一个 jre 来执行一个 jar,恐怕这是不可能的。

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

于 2009-03-20T06:33:16.490 回答
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 的搜索结果中。一切都是使用NetBeans IDE 中的本机打包完成的。

结果是一个独立的 .exe 安装程序 (YourProjectName.exe),它在AppData\Local\YourProjectName中创建了一个文件夹。在该文件夹中,您将找到启动器(一个 .exe)以及在不安装 Java 的情况下运行软件所需的所有文件。

您应该使用与文章中所说的完全相同的工具版本,否则它不起作用,至少对我来说不起作用。另一个不清楚的是,你的项目必须是带有 Ant proyect 的 Java,至少我没有找到使用 Gradle 或 Maven 的方法。

另外,我必须安装一个旧的i586版本的 Java(我尝试了 JDK 1.8 i586 并且它工作),因为 JDK 13 在尝试运行该软件时会导致错误(缺少 dll)。虽然我只尝试使用 JDK 13 x64,但也许架构是问题而不是版本。不管怎样,NetBeans 11 也发生了类似的情况,.exe 启动器不起作用,但是在定位和执行 .jar 时它确实起作用了。所以我最终使用了 NetBeans 8。

于 2019-10-02T06:20:23.113 回答