我一直在网络和论坛上寻找将Java Runtime Environment与我的Java应用程序包含在一起的正确方法。
我知道JRE与机器有关,因此,如果我想为MAC或Linux部署,那么提供我的应用程序的JRE将会改变。
我真正想知道的(假设我之前所说的是正确的),是:
“有没有办法检查客户端计算机上是否安装了JRE,如果在尝试运行我的应用程序之前没有安装它?”
因为我认为不可能:
您认为我应该使用适用于客户端系统的JRE文件夹部署我的应用程序,并使用JRE文件夹中包含的java.exe使用脚本启动我的应用程序吗?
这可以避免安装任何Java东西,但对我来说这看起来不是一个好习惯......
答案 0 :(得分:3)
如果您的应用程序是客户端,我会提供两种选择:安装和没有JRE。许多Java应用程序都提供了两种安例如,SmartGit应用程序允许您下载带有捆绑JRE的安装或使用现有JRE的安装(其用户负责拥有兼容版本的Java)。许多应用程序服务器都附带了自己的JDK,已包含在安装中。
因此,如果您不希望客户遇到任何问题,可以使用JRE捆绑部署;但是,我也允许非JRE安装(以满足挑剔的:)。
如果您的应用程序是服务器端,通常它不附带JRE,但同样,这不是一个规则。
此外,您的运行/安装脚本可能会检查是否安装了正确的JRE或JDK(通过检查是否设置了JAVA_HOME等),然后在JRE丢失时退出。更重要的是,该脚本甚至可以下载java并在本地安装它 - 尽管使用你已经为应用程序准备的捆绑JRE会更实际。或者,如果检测到JRE,您可以询问用户是否要使用现有的Java或捆绑。
捆绑JRE并不是什么大问题。即使我有时会使用捆绑的JRE安装java应用程序,因为我将系统打开到例如应用程序不支持的新版本或64位版本的Java ......
希望这会有所帮助;)
答案 1 :(得分:1)
java -version
命令告诉JVM版本;因此,您可以根据此命令的输出决定是否需要安装。
C:\ Users \ 501200I958> java -version
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)