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

时间:2009-01-29 13:14:58

标签: java asp.net applet version-detection

我有一个托管Java applet的ASP .NET网站。 Java applet需要Java运行时版本1.6 Update 11。

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

谢谢,

卡尔。

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

12 个答案:

答案 0 :(得分:10)

此页面介绍了如何并列出一些允许您使用JavaScript检测Java的插件:http://www.pinlady.net/PluginDetect/JavaDetect.htm

除此之外,请尝试以下代码:

if (navigator.javaEnabled()) {
    //Java is enabled
}

答案 1 :(得分:6)

以下链接详细介绍了Java应用的部署提示。

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

从链接引用

  

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

答案 2 :(得分:5)

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

然后,您可以在Java applet本身中使用System.getProperty("java.version")。这应该足以为您提供版本信息,例如1.6.0_03

答案 3 :(得分:2)

虽然到目前为止大多数答案都是围绕用户代理(浏览器)本身的检测,但听起来就像你提到ASP.NET一样,你想在服务器端进行这种检测。如果是这样,你有几个选择。

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

您拥有的另一个选项是向用户代理发送javascript以使用此问题中其他答案中的一种技术执行检测,然后使用ajax回调告诉服务器您发现了什么。

答案 4 :(得分:1)

如果您不介意使用需要运行较旧版本的基本Java小程序,可以使用this article并继续根据该结果。

答案 5 :(得分:0)

也许这个脚本会有所帮助。但这只是Windows版本。

<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>

答案 6 :(得分:0)

如果解决方案必须与平台无关。我将排除javascript提供的所有解决方案。

你可以编写一个非常简单的Applet,它由古老的Classic VM支持。让applet检测JRE版本,并显示消息。

如果您接受Javascript,您可能也会对this article感兴趣,这与WebStart应用程序的自动安装程序有关。

答案 7 :(得分:0)

  1. 使用deployJava.js函数getJREs()根据用户的Java版本构建动态页面。

  2. 使用http://cowwoc.blogspot.com/2008/12/tracking-java-versions-using-google.html跟踪使用Google Analytics的网络访问者使用的Java版本。

  3. 奖励步骤:使用step 2中的源代码作为如何实施第1步的示例。

答案 8 :(得分:0)

只需将amd粘贴到浏览器地址栏即可! 检查它是否对您有用。

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

您需要在插件数组中获取Java的位置,也许您可​​以使用正则表达式检查版本。你可以看一下插件javascript对象。

问候!

答案 9 :(得分:0)

答案 10 :(得分:0)

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

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

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

下载deployJava.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);

答案 11 :(得分:-1)

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

的javascript:警报(navigator.javaEnabled())

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