如何将JRE捆绑到Java应用程序的EXE中? Launch4j说“运行时丢失或损坏。”

我是Java编程的新手,但我一般都熟悉一切是如何工作的。 我希望能够将jar文件和jre放入windows可执行文件(exe)中,这样当我分发它时,客户端不需要安装JRE。 我应该使用什么程序?

我有launch4j,它似乎正是我想要的,但是当我尝试运行应用程序时,我得到“此应用程序已配置为使用捆绑的Java运行时环境,但运行时丢失或损坏。”

我希望我的应用程序只是一个可运行的exe,而不是安装程序。 至少,有人能告诉我如何正确地将一个JRE与launch4j捆绑在一起吗?

我可以捆绑JRE的唯一方法是使用Launch4J和Inno Setup Compiler 。

首先,在与输出文件(.exe)相同的目录中创建一个jre6文件夹(例如)。

然后将JRE从系统复制到jre6文件夹中。

然后打开Launch4J并设置Bundled JRE路径 – 只需输入jre6 。 然后单击Build按钮(显然,在输入所有其他参数后 – 但是您需要在JRE选项卡上输入的唯一值是Bundled JRE路径值。)

我希望这可以工作,但是如果你然后将.exe移动到一个新位置(因此它不再与你的jre6文件夹位于同一位置 )你得到了这个应用程序被配置为使用捆绑的Java运行时环境但是尝试运行应用程序时运行时丢失或损坏错误…

我整天都玩这个,并且我无法让Launch4J在.exe文件中包含JRE。 我认为真的很差,因为他们的文档似乎根本没有提到这个问题。

所以我要解决的是使用Inno Setup Compiler(ISC) 。 此应用程序用于将.exe包装为Windows Installer文件。 所以我在ISC脚本中添加了一个设置,将JRE复制到安装程序包中。 我添加到脚本中的行(在[Files]部分中)是:

 Source: "M:\Netbeans\MyApp\jre6\*"; DestDir: "{app}\jre6\"; Flags: recursesubdirs createallsubdirs 

…一些解决方法,但它确实做到了。

重复上述所有步骤,您应该进行排序。

我从来没有使用过Launch4J产品,祝它正确配置好运。

看起来您可以在Sourceforge的论坛上查看其他提示

其他建议:

我从IBM(Websphere)和Oracle看到的大多数产品只是在安装目录下提取JRE并配置startup batch命令以使用已安装的JRE。 基本上JRE和你的jar文件将一次安装。

安装程序exe通常检查它是否已经安装,如果发现它已经存在,则跳过该步骤。 这对于仅升级jar文件很有用。

拥有本地安装还解决了客户安装自己的JRE的问题,这些JRE可能不兼容或包含错误。 这样你就可以处理一个已知的JRE版本。

如果你的应用程序没有图形组件,那么excelsior路线就可以了(已经有一段时间了,这个限制可能已经改变了)。 还有其他限制,但您可能最好只在单个可执行安装程序中使用您的代码分发JRE。

看来你需要本机代码编译器。 这些编译器生成不需要JRE的本机代码。

查看这篇文章 – https://www.excelsior-usa.com/articles/java-to-exe.html#aot

它容易捆绑jre到launch4j ..

只需将jre复制到同一个输出文件夹中

在捆绑jre环境文本框中,只需给出jre文件夹本身

在环境变量文本框中(显示在下面的同一页面中),直到bin

然后创建exe ..它按预期工作,没有机器中的jre。

谢谢

你所要求的并不容易(如果可行的话)。如果我是你,我会考虑创建一个可执行的JAR文件:

java eclipse创建可执行jar

另一种选择是使用Java Web Start。 这假设您正在使用现代浏览器,JNLP将自动提示用户安装正确版本的Java。

http://docs.oracle.com/javase/tutorial/deployment/webstart/index.html

launch4j不能顺利运行有几个原因。 一些原因是:

1)用户不以管理员身份运行应用程序

2)用户没有正确设置图标图像。 必须严格.ico