检查JRE是否安装在不同的操作系统上?

时间:2011-12-18 18:29:44

标签: java java-web-start web-deployment

我正在尝试从我的网站为不同的用户部署JNLP。 用户输入他的用户名,我为该用户生成一个带有特定jar的JNLP,并给他一个配置正确的jnlp文件。

问题是如果用户没有在他的机器上安装JRE(Windows / Mac / Ubuntu),他将无法运行jnlp。

我的主要2个问题是:

  1. 如何知道JRE是否安装在某台机器上(我不在乎用户正在使用的浏览器上是否存在java插件)所有我需要在系统上运行的JRE JNLP(在所有操作系统上)?

  2. 如何安装(如果我知道机器上没有jre)任何JRE,并且首选来自我的网站v.1.6。*(或重定向到java.com网站然后返回到我的页面)?

  3. 考虑到我已经看过以下内容:

    我查看了deployJava.js,并将其与我的网站集成。 但它并不适用于所有浏览器/操作系统。

    我使用了versionCheck(“1.5+”)和isWebStartInstalled()来检测用户是否在他的机器上安装了jre但不幸的是它无法在FF(在ubunto OS上)上检测到Windows XP的FF, IE和Chrome它运行良好!!!

    * 所以我需要知道用户是否在他的机器上安装了JRE。
    提醒:我不在乎浏览器是否有java插件与否!

    在Windows XP上如果我在JS中调用installJRE(“1.6.0_29”)它将表现如下: Chrome它会将我重定向到java并告诉我安装1.6.0_30! (这对我来说很好)。 FF和IE不会在任何地方重定向,也没有任何反应。(似乎脚本尝试使用浏览器上安装的插件来更新它,但同时从机器上卸载jre但是有些IE和FF仍然看到有一个java PLUGIN!)

    如果我使用installLatestJRE()它将在IE上工作但它会重定向我安装JRE v.1.7.0_2,它仍然不像我想的那样稳定。它的应用程序有问题。 (我的应用程序在v.1.6的JRE上工作正常。*但在v.1.7。*上有问题)这不是问题,因为如果用户有jRE我已经在jnlp中使用了我所需的jre:

        <java version="1.6.*" href="http://java.sun.com/products/autodl/j2se" />
    

    这将为我安装最新的1.6。* JRE(如果它不存在)。 在Chrome上它工作正常并重定向我安装v.1.6.0.30。 在FF上它不起作用。
    (FF版本全是8)
    我在3台不同的机器上尝试了这个,我已经多次查看代码但不幸的是它在这些不同的机器和浏览器上没有稳定的工作方式。

    BTW测试的浏览器中没有一个将我重新定向回我的网站(即使他们在查询字符串中返回= www.mywebsite.com)我已经在java文档中读过它但他们说它会工作一段时间但不会所有浏览器!

    对于这个案例的长篇解释感到抱歉,但我希望得到一个新的解决方案,除了我尝试过的解决方案。

    P.S:我在这里读到了一些问题,其中一些正文回答了一个链接到你的JNLP和下面的一个注释,我们必须让java安装在你的机器上,并附带一个指向java sun的链接。但我不喜欢这个解决方案,我更喜欢决定何时将用户重定向到java,因为用户是新手。

1 个答案:

答案 0 :(得分:1)

简短版:你不能。

更长的版本:您正在寻找使用Java WebStart启动并明确提到您对浏览器插件不感兴趣。这意味着您无法在浏览器中进行检查,因为用户希望在计算机上使用的Java WebStart可能与浏览器内的任何内容完全不相关。

唯一可用的选项是用户以其他方式调用JNLP脚本的方式。换句话说,提供测试JNLP文件,并允许用户启动它。在“点击这里”链接附近解释说明事情可能无效的原因,以及指向http://java.com/en/download/installed.jsp的链接,让Oracle帮助他们。