我应该如何将Java与Windows应用程序捆绑在一起?

时间:2011-05-14 18:04:09

标签: java windows installation

我有一个基于Java的Windows应用程序,我想用Java捆绑安装。安装框架是NSIS。应该保证应用程序可执行文件调用捆绑的Java,因此不会与系统中安装的其他Javas发生冲突。

实现目标的最佳方式是什么?我之前没有尝试解决这类问题,并且对Java几乎没有经验,所以我不知道那里有哪些解决方案。如果可行的话,我想我更喜欢将Java嵌入到应用程序的可执行文件中,否则我猜Java可以与它一起安装(可执行文件指向Java)。

修改 该项目已经通过NSIS生成可执行文件(.exe)。可执行文件默认使用系统Java,但显然它更喜欢同一目录中的JRE(即捆绑)(如果存在)。

编辑2 : 让我想用这个应用程序捆绑Java的场景是我收到了一个用32位Java构建的可执行文件,它在我的64位Java系统上失败了(无声)。

4 个答案:

答案 0 :(得分:1)

您是否确定不想使用计算机JRE?在大多数情况下,这是更可取的。 您可以看到here(以及包含的链接)安装程序的一些示例,它们检查JRE编号并在必要时(全局)安装它。

如果您真的希望在安装程序中包含自己的JRE并始终使用它 - 那么是什么阻止您这样做?这只是你的主程序点有一些方法来解决JRE位置和强制使用它。这取决于您打包/调用Java程序的方式。通常情况下,这可能是一个简单的.bat文件 - 可能是在安装时创建的。

答案 1 :(得分:0)

我们使用的解决方案(几年前,但我认为最好的方法)。

找一个可以从jar文件生成exe文件的程序(Google是你的朋友,我记不起名字了)。请注意,此.exe文件仍需要jre。它只是一个聪明的方法来创建一个包含.jar文件的exe文件,并自动启动java进程。 (这也允许您在.exe文件上设置自定义图标。)

用于开发/编译java应用程序的java sdk,还包含一个名为jre的文件夹,其中包含jre的副本。

将此文件夹包含在安装程序中,因此jre文件夹与.exe文件位于同一文件夹中。然后.exe文件将使用包含的jre,并且jre将不会安装在计算机上,因此您可以防止出现任何问题。

答案 2 :(得分:0)

一个非常简单的解决方案,如果您不必获取可执行文件,它实际上非常好用,只是使用一个简单的Windows批处理文件启动jar并有一个快捷方式,以便您在其上获得首选图标。对于普通用户而言,没有什么真正的区别 - 毕竟默认是在Windows上抑制已知扩展(可怕的默认但很好) - 对于那些知道exe是什么的人来说,解决方案应该是非常明显的。

这样你也可以轻松启动包含的java或更好地提供两个版本,只需更改ini文件中的变量,这真的更好 - 没人想要或需要X个不同的JRE版本已经过时而且不多了比安全问题。对于没有安装java的人来说,提供一个包含JRE的版本仍然可以让它尽可能简单。

此行为的一个示例是weka ..

答案 3 :(得分:0)

launch4j似乎提供捆绑嵌入式JRE。