2013-04-02 135 views
4

我一直在寻找在网络和此论坛上的正确方法,以便将Java运行时环境与我的Java应用程序一起使用。如果未安装,请安装JRE

我知道JRE是依赖于机器的,因此,如果我想为例如MAC或Linux进行部署,与我的应用程序一起提供的JRE将发生变化。

我真正想知道的(假设我说的是正确的之前),是:

“有没有一种方法来检查JRE是否安装在客户机上,如果之前没有安装试图运行我的应用程序?“

因为我不认为这是可能的:

你觉得我应该部署我有适合于客户端系统的JRE文件夹中的应用,并与使用的java.exe包含的脚本启动我的应用程序在JRE文件夹中?

这避免了安装任何Java的东西,但它看起来并不像一个很好的做法,我...

+1

[可能重复?](http://stackoverflow.com/questions/2716391/is-there-a-机制分发一个应用程序与它自己的JRE) – Andrew

+1

如前所述,看看install4j;这里还有一个使用Netbeans平台的例子 - http://netbeans.dzone。com/includes-jre-in-nbi – hovanessyan

+0

非常感谢你的例子。我意识到install4j,但没有设法使它在Mac上工作。我也会试试:) –

回答

3

如果您的应用程序的客户端,我将提供两个选项:安装与和W/o JRE。许多Java应用程序都提供这两种安装例如,SmartGit应用程序允许您下载捆绑JRE的安装或使用现有JRE(其用户负责拥有兼容版本的Java)的安装。许多应用程序服务器随附自己的JDK,它们已经包含在安装中。

因此,如果您不希望客户遇到任何问题,那么与JRE捆绑部署就可以了;然而,我也会允许非JRE安装(以满足挑剔的:)。

如果您的应用程序是服务器端的,通常它不会随JRE一起提供,但这又不是一个规则。

此外,您的运行/安装脚本可能会检查是否安装了正确的JRE或JDK(通过检查是否设置了JAVA_HOME等),然后在缺少JRE时退出。更甚者,脚本甚至可以下载java并在本地安装 - 尽管使用随应用程序准备的捆绑JRE会更实用。或者,如果检测到JRE,您可以询问用户是否要使用现有的Java或捆绑销售。

捆绑JRE并不是什么大不了的事情。即使我有时会安装带有捆绑JRE的Java应用程序,因为我已将系统切换到例如新版本或Java的64位版本不会被应用等支持...

希望这有助于;在Windows上的CMD)

+0

非常感谢你。非常有用的答案:) 由于应用程序可能会分布在CD-ROM上,我想最好是提供脚本来检查是否安装了Java,如果没有安装它。 –

+1

是的,在你的情况下,这是真的。请注意,您甚至不必完全安装JRE(如果存在),它可以就在那里,与应用程序捆绑在一起。 – igr

1

java -version命令告诉JVM版本;因此您可以根据此命令的输出决定是否需要安装。

C:\用户\ 501200I958> Java的版本

java version "1.7.0_17" Java(TM) SE Runtime Environment (build 1.7.0_17-b02) Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)