【发布时间】:2018-02-05 06:34:14
【问题描述】:
我正在尝试在 Internet Explorer 11(64 位)上使用 JRE 9 运行小程序,但它无法运行。我在 Windows 10 和 server 2012 上试过。 在我的应用程序中,我们使用 deployJava.js 检测已安装的 jre 版本。如果未找到版本,则会显示下载提示。此检测是通过 javascript 函数 getJREs 完成的,该函数可以在 here 找到。见下面的 sn-p:
getJREs: function() {
var list = new Array();
if (this.isPluginInstalled()) {
var plugin = this.getPlugin();
var VMs = plugin.jvms;
for (var i = 0; i < VMs.getLength(); i++) {
list[i] = VMs.get(i).version;
}
} else {
var browser = this.getBrowser();
if (browser == 'MSIE') {
if (this.testUsingActiveX('9')) {
list[0] = '9';
} else if (this.testUsingActiveX('1.8.0')) {
list[0] = '1.8.0';
} else if (this.testUsingActiveX('1.7.0')) {
list[0] = '1.7.0';
} else if (this.testUsingActiveX('1.6.0')) {
list[0] = '1.6.0';
} else if (this.testUsingActiveX('1.5.0')) {
list[0] = '1.5.0';
} else if (this.testUsingActiveX('1.4.2')) {
list[0] = '1.4.2';
} else if (this.testForMSVM()) {
list[0] = '1.1';
}
} else if (browser == 'Netscape Family') {
this.getJPIVersionUsingMimeType();
if (this.firefoxJavaVersion != null) {
list[0] = this.firefoxJavaVersion;
} else if (this.testUsingMimeTypes('9')) {
list[0] = '9';
} else if (this.testUsingMimeTypes('1.8')) {
list[0] = '1.8.0';
} else if (this.testUsingMimeTypes('1.7')) {
list[0] = '1.7.0';
} else if (this.testUsingMimeTypes('1.6')) {
list[0] = '1.6.0';
} else if (this.testUsingMimeTypes('1.5')) {
list[0] = '1.5.0';
} else if (this.testUsingMimeTypes('1.4.2')) {
list[0] = '1.4.2';
} else if (this.browserName2 == 'Safari') {
if (this.testUsingPluginsArray('9')) {
list[0] = '9';
} else if (this.testUsingPluginsArray('1.8')) {
list[0] = '1.8.0';
} else if (this.testUsingPluginsArray('1.7')) {
list[0] = '1.7.0';
} else if (this.testUsingPluginsArray('1.6')) {
list[0] = '1.6.0';
} else if (this.testUsingPluginsArray('1.5')) {
list[0] = '1.5.0';
} else if (this.testUsingPluginsArray('1.4.2')) {
list[0] = '1.4.2';
}
}
}
}
if (this.debug) {
for (var i = 0; i < list.length; ++i) {
log('[getJREs()] We claim to have detected Java SE ' + list[i]);
}
}
return list;
}
在 JRE 9 的情况下,此功能无法检测 java 版本,并且小程序无法加载。 以下是我看到的讨论内容相同:
- JDK-8188306
- JDK-8193431
- JDK-8162522
- This microsoft answer
- This SO OP solves it using 32 bit JRE。就我而言,这是不可能的,因为 Oracle 没有发布 32 位版本的 JRE/JDK 9。
我还可以看到,这两个 Java SSV 插件助手在 IE 插件列表中都被列为不兼容。
我尝试使用 JRE 1.8(32 位和 64 位)加载小程序,它加载得非常好。
我知道小程序在 java 9 中已被弃用,但弃用并不意味着它们不会运行,不是吗?
PS:如果您不要求我不要使用小程序,我将不胜感激,因为我必须为遗留目的而这样做。所以,提前谢谢!
【问题讨论】:
-
“我知道小程序在 java 9 中已被弃用,但弃用并不意味着它们不会运行,对吗?” 请参阅 Java Plugin support deprecated 和 @987654328 @。顺便说一句 - 如果浏览器制造商不再支持小程序(就是这种情况),Oracle 是否弃用它们是无关紧要的。
-
@AndrewThompson 我也同意。但我看不到任何官方来源(oracle 或 microsoft)说 IE 11 无法使用 JRE/JDK 9 加载小程序。
-
“但我看不到任何官方来源..” 而且我看不出花时间尝试解决这个问题有什么意义。我不是“官方消息来源”,但我是top ranked provider of applet answers,也是迄今为止唯一一个打扰评论的人。祝你好运。
-
为了强制 IE11 使用 64 位插件,我需要在 IE11 设置中勾选“Enable 64-bit processes for Enhanced Protected Mode”,并将“Windows Components/Internet Explorer/Tab Process Growth”设置为 0在组策略中。
-
你还在为小程序而烦恼吗?我最近有一个迁移到 web start 的项目:docs.oracle.com/javase/9/deploy/migrating-java-applets-jnlp.htm 从长远来看,这可能是一个解决方案,但如果坚持使用小程序是业务需求,我猜你可以拥有多个 java 版本......
标签: java applet 64-bit internet-explorer-11 java-9