如何将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