我有使用 Java Applets 构建的应用程序,它适用于带有 IE 9 的 Windows 7。现在我正在尝试将它移动到另一个环境。有 Internet Explorer 11。
要运行小程序,我使用 Oracle Deployment Toolkit Script最新版本取自 https://www.java.com/js/deployJava.txt .但是脚本没有检测到 Java 插件。它只会重定向到页面 java.com
(建议下载最新的 JRE
)。
但是我的浏览器安装了 Java 插件(这里是 JRE 1.7.80):
还有两个 SSV Helpers - 也许是它们导致了问题?
Java 8 (u144) 导致同样的问题。
问题:
如何检测IE 11中的Java Plugin并运行小程序?
deployJava.js
或 IE 11 配置有问题吗?
更多解释:
Oracle deployJava.js
脚本使用这样的代码来检测 IE 中的 JRE 版本 ( deployJava source - lines 1172-1188 ):
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] { }
我很困惑...Oracle 可以将脚本做得更好吗?
规范:
Internet Explorer 11,版本:11.1480...更新版本:11.0.44
系统:Windows 服务器
Java:使用 1.8.144 和 1.7.80 之后测试
Oracle 运行的小程序 deployJava.js
最佳答案
我找到了一个解决方案:
小程序需要在客户端机器上安装 32 位 JRE(并作为 IE 插件)。或者更具体地说,IE ActiveX 机制仅适用于 32 位 Java,因为默认情况下所有 IE 都是 32 位的。也有64位的IE版本,不过我没试。
我使用了最新的 JRE 1.8u144 32 位
。
任何人都可以使用小程序的一些提示(即使在 2017 年):
- 检查 Internet Explorer 版本(32 位或 64 位)- 查看帮助 -> 关于 Internet Explorer,如果没有 64 位信息,那么您可能使用 32 位。还要检查 Windows 任务管理器并搜索 *32 进程。更多信息在 other SO questions like this .
- 禁用 ActiveX 过滤也可能有帮助。但在我的情况下,这不是必需的,因为 IE 会显示警告运行 Java 插件的消息,我只需要接受它。
- 我在Internet 选项 窗口的安全 选项卡上禁用了选项:启用保护模式(对于Internet 区域 ).
可以从此讨论中检索更多信息:
关于javascript - IE 11 找不到运行 Applet 的 Java 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45423357/