我有使用Java Applets构建的应用程序,该应用程序在带有IE 9的Windows 7上运行良好。有Internet Explorer 11。
要运行applet,我使用的是Oracle Deployment Toolkit Script。它仅重定向到页面java.com(建议下载最新的JRE)。
但是我的浏览器已安装Java插件(此处为JRE 1.7.80):
还有两个SSV帮助程序-可能引起问题吗?
Java 8(u144)引起相同的问题。
问题:
如何在IE 11中检测Java插件并运行applet?
deployJava.js或IE 11配置是否有问题?
更多说明:
Oracle deployJava.js脚本使用以下代码来检测IE(deployJava source – lines 1172-1188)中的JRE版本:
testUsingActiveX: function(version) {
var objectName = 'JavaWebStart.isInstalled.' + version + '.0';
// we need the typeof check here for this to run on FF/Chrome
// the check needs to be in place here - cannot even pass ActiveXObject
// as arg to another function
if (typeof ActiveXObject == 'undefined' || !ActiveXObject) {
log('[testUsingActiveX()] Browser claims to be IE, but no ActiveXObject object?');
return false;
}
try {
return (new ActiveXObject(objectName) != null);
} catch (exception) {
return false;
}
},
不幸的是,ActiveX似乎在IE 11中受到限制,限制或禁用。关于SO is here的主题…任何人都知道任何细节吗?
我手动运行(在IE 11.1480开发人员控制台中)此代码:
new ActiveXObject('JavaWebStart.isInstalled.1.8.0.0');
返回:
Automation server can’t create object
但是,在较旧的IE 11.09600中运行相同的代码将返回object:
[object] { }
我很困惑… Oracle可以使脚本更好吗?
规范:
Internet Explorer 11,版本:11.1480 …更新版本:11.0.44
系统:Windows Server
Java:经过1.8.144和1.7.80之后的测试
Oracle deployJava.js运行的小程序
最佳答案
我找到了一个解决方案:
Applet需要在客户端计算机上(并作为IE插件)安装32位JRE。或者更具体地说,IE ActiveX机制仅适用于32位Java,因为默认情况下所有IE都是32位。也有64位IE版本,但我不尝试。
我使用了最新的JRE 1.8u144 32 bit。
任何人都可以使用applet的一些提示(即使在2017年):
检查Internet Explorer版本(32位或64位)-查看帮助->关于Internet Explorer,如果没有64位信息,则可能使用32位。还要检查Windows任务管理器并搜索* 32进程。在other SO questions like this中的更多信息。
禁用ActiveX筛选也可能会有所帮助。但是在我的情况下,这不是必需的,因为IE显示警告运行Java插件的消息,而我只需要接受即可。
我已禁用选项:在“Internet选项”窗口(用于Internet区域)的“安全性”选项卡上启用“保护模式”。