我有一个托管 Java 小程序的 ASP .NET 网站。Java 小程序需要 Java 运行时版本 1.6 Update 11。
如何检测客户端是否安装了适当的运行时,以便在没有安装的情况下显示信息性消息?
谢谢,
卡尔。
编辑:解决方案必须独立于平台。
我有一个托管 Java 小程序的 ASP .NET 网站。Java 小程序需要 Java 运行时版本 1.6 Update 11。
如何检测客户端是否安装了适当的运行时,以便在没有安装的情况下显示信息性消息?
谢谢,
卡尔。
编辑:解决方案必须独立于平台。
此页面描述了如何并列出了一些允许您使用 JavaScript 检测 Java 的插件:http ://www.pinlady.net/PluginDetect/JavaDetect.htm
除此之外,也试试这个片段:
if (navigator.javaEnabled()) {
//Java is enabled
}
下面的链接详细介绍了 java 应用程序的部署技巧。
http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html
从链接引用
Deployment Toolkit 为避免浏览器兼容性问题,Deployment Toolkit ( deployJava.js ) 提供了 JavaScript 函数,可自动生成部署 applet 和 Java Web Start 应用程序所需的 HTML。开发人员应该调用这些函数以在各种浏览器中以一致的方式部署他们的解决方案。
我的方法是使用 JavaScriptnavigator.javaEnabled()
检查是否有可用的Java 版本。
然后,您可以System.getProperty("java.version")
在 Java 小程序本身中使用。这应该足以让您获得版本信息,例如1.6.0_03
.
尽管到目前为止大多数答案都是围绕用户代理(浏览器)本身的检测,但从您提到的 ASP.NET 中听起来您希望在服务器端进行这种检测。如果是这样,您有几个选择。
首先,您可以嗅探来自用户代理的 HTTP 请求标头。安装了 Java 的计算机和浏览器通常会包含一个标头,该标头向您可以获取的服务器提供此提示。以下是有关此方法的一些有用链接:http: //www.developershome.com/wap/detection/ https://metacpan.org/pod/HTTP::Browscap
您拥有的另一个选择是将javascript发送到用户代理以使用此问题中其他答案中的一种技术执行检测,然后使用ajax回调告诉服务器您发现了什么。
如果您不介意使用需要运行更旧版本的基本 Java 小程序,您可以使用本文并根据该结果继续。
也许这个脚本会有所帮助。不过,这仅适用于 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>
如果解决方案必须独立于平台。我将排除 javascript 提供的所有解决方案。
您可以编写一个非常简单的 Applet,它由老式的 Classic VM 支持。让小程序检测 JRE 版本,并显示消息。
如果您接受 Javascript,您可能还会对这篇关于 WebStart 应用程序的自动安装程序的文章感兴趣。
使用deployJava.js函数 getJREs() 根据用户的 Java 版本构建动态页面。
使用http://cowwoc.blogspot.com/2008/12/tracking-java-versions-using-google.html通过 Google Analytics 跟踪您的网络访问者使用的 Java 版本。
奖励步骤:使用步骤 2中的源代码作为如何实施步骤 1 的示例。
只需复制并粘贴此代码到您的浏览器地址栏中!检查它是否对您有用。
javascript: for(i = 0; i < navigator.plugins.length; i++) alert(navigator.plugins[i].name);
您需要获取 Java 在 plugins 数组中的位置,也许您可以使用正则表达式或其他方式检查版本。您可以查看插件 javascript 对象。
问候!
下面的链接是我让它工作的方式。它有一个你可以获得的 JS,它是为 Java 部署而制作的。上面提到了该链接,但我认为有一个示例会很好。
这些是我最终需要解决我的问题的示例。
一旦你下载了 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);
复制并粘贴到您的浏览器地址栏中以检查:
javascript:alert(navigator.javaEnabled())
适用于 Mozilla (FF3) 和 IE7。(x64)