代码之家  ›  专栏  ›  技术社区  ›  Carl

如何检测从ASP.NET网站安装在客户端上的Java运行时?

  •  3
  • Carl  · 技术社区  · 16 年前

    我有一个ASP.NET网站,托管一个Java小程序。Java Applet需要Java运行时的版本1.6更新11。

    如何检测客户机是否安装了适当的运行时,以便在不安装运行时显示信息性消息?

    谢谢,

    卡尔。

    编辑: 解决方案必须是平台独立的。

    12 回复  |  直到 10 年前
        1
  •  10
  •   Andreas Grech    16 年前

    本页描述如何并列出一些允许使用JavaScript检测Java的插件: http://www.pinlady.net/PluginDetect/JavaDetect.htm

    除此之外,还可以尝试以下代码片段:

    if (navigator.javaEnabled()) {
        //Java is enabled
    }
    
        2
  •  6
  •   Ramesh César Landesa    16 年前

    下面的链接详细介绍了Java应用程序的部署技巧。

    http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html

    从链接引用

    部署工具包 为了避免浏览器兼容性问题,部署工具包( deployJava.js 提供JavaScript函数,这些函数自动生成部署applet和Java Web启动应用程序所需的HTML。开发人员应该调用这些函数,在不同的浏览器中以一致的方式部署他们的解决方案。

        3
  •  5
  •   paxdiablo    16 年前

    我的方法是使用JavaScript navigator.javaEnabled() 检查是否有 一些 可用的Java版本。

    然后你可以用 System.getProperty("java.version") 从Java小程序本身。这应该足以为您提供版本信息,例如 1.6.0_03 .

        4
  •  2
  •   sid_com    10 年前

    尽管到目前为止,大多数答案都是围绕用户代理(浏览器)本身的检测展开的,但从您提到的ASP.NET中,似乎您希望在服务器端进行此检测。如果是这样,你有几个选择。

    首先,您可以嗅探来自用户代理的HTTP请求头。安装Java的计算机和浏览器通常包括一个头,向服务器提供一个提示,您可以在上面查找。以下是有关此方法的一些有用链接: http://www.developershome.com/wap/detection/ https://metacpan.org/pod/HTTP::Browscap

    另一种选择是将javascript发送给用户代理,使用本问题其他答案中的一种技术执行检测,然后使用Ajax回调告诉服务器您发现了什么。

        5
  •  1
  •   achinda99    16 年前

    如果你不介意使用一个基本的Java applet,它需要一个更旧的版本来运行,你可以使用 this article 然后根据结果继续。

        6
  •  0
  •   SquidScareMe    16 年前

    也许这个剧本会有帮助。不过,这只是窗户。

    <script language='javascript' type='text/javascript'>
    var javaVersion;
    var shell;
    try 
    {
        // Create WSH(WindowsScriptHost) shell, available on Windows only
        shell = new ActiveXObject("WScript.Shell");
    
        if (shell != null) 
        {
            // Read JRE version from Window Registry
            try 
            {
                javaVersion = shell.regRead("HKEY_LOCAL_MACHINE\\Software\\JavaSoft\\Java Runtime Environment\\");
            } 
            catch(e) 
            {
                // handle exceptions raised by 'shell.regRead(...)' here
                // so that the outer try-catch block would receive only
                // exceptions raised by 'shell = new ActiveXObject(...)'
                alert('error reading registry');
            }
        } 
    } 
    catch(e) 
    {
        // Creating ActiveX controls thru script is disabled 
        // in InternetExplorer security options 
    
        // To enable it: 
        // a. Go to the 'Tools --> Internet Options' menu
        // b. Select the 'Security' tab
        // c. Select zone (Internet/Intranet)
        // d. Click the 'Custom Level..' button which will display the
        // 'Security Settings' window.
        // e. Enable the option 'Initialize and script ActiveX controls
        // not marked as safe'
    
        activeXDisabled = true;
    } 
    
    // Check whether we got required (1.6) Java Plugin
    if ( javaVersion != null && javaVersion.indexOf("1.6")) 
    {
        pluginDetected = true;
        alert('it is installed!')
    }
    
    if (pluginDetected) 
    {
        // show applet page
    } 
    else if (confirm("Java Plugin 1.6 not found")) 
    {
        // show install page
        alert('not found')
    } 
    else 
    {
        // show error page
        alet('error')
    }
    </script>
    
        7
  •  0
  •   Dennis C    16 年前

    如果解决方案必须独立于平台。我将排除JavaScript提供的所有解决方案。

    您可以编写一个非常简单的小程序,它支持古老的经典虚拟机。让小程序检测JRE版本,并显示消息。

    如果您接受javascript,您还可能感兴趣 this article 这是关于WebStart应用程序的自动安装程序。

        8
  •  0
  •   Gili    16 年前
    1. 使用 deployJava.js 函数GejRESE()根据用户的Java版本构建动态页面。

    2. 使用 http://cowwoc.blogspot.com/2008/12/tracking-java-versions-using-google.html 使用谷歌Analytics跟踪Web访问者正在使用的Java版本。

    3. 额外步骤:使用源代码 step 2 作为如何实施步骤1的示例。

        9
  •  0
  •   mati    16 年前

    只需复制和粘贴此代码在您的浏览器地址栏! 检查它是否对您有用。

    javascript: for(i = 0; i < navigator.plugins.length; i++) alert(navigator.plugins[i].name);
    

    你需要在插件数组中获取Java的位置,也许你可以用正则表达式或某些东西来检查版本。您可以查看插件javascript对象。

    当做!

        11
  •  0
  •   CastroXXL    14 年前

    下面的链接是我让它工作的方式。它有一个JS,它可以用于Java部署。上面提到了这个链接,但是我认为用它做一个例子会很好。

    这些是我最终需要解决我的问题的样本。

    http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/technotes/guides/jweb/deployment_advice.html#deplToolkit

    一旦下载了部署Java.js文件,就可以放置一些东西来确保Java被安装: if (deployJava.getJREs().length > 0) { //Your code to start java }

    确保安装了特定版本: if (deployJava.versionCheck(version)) { //Your version specific code }

    启动最新Java的安装程序: deployJava.installLatestJava();

    或特定版本,如果您希望: deployJava.installJRE(version);

        12
  •  -1
  •   Ed Blackburn    16 年前

    复制并粘贴到浏览器地址栏以进行检查:

    javascript:alert(navigator.javaEnabled())

    适用于Mozilla(FF3)和IE7。(x64)