【问题标题】:64 bit plugin of JRE/JDK/Java 9 is incompatible with IE 11 64 bitJRE/JDK/Java 9的64位插件与IE 11 64位不兼容
【发布时间】: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 版本,并且小程序无法加载。 以下是我看到的讨论内容相同:

  1. JDK-8188306
  2. JDK-8193431
  3. JDK-8162522
  4. This microsoft answer
  5. 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


【解决方案1】:

Oracle 对 32 位 JRE 的终结使得如果不为安装 Oracle JRE 的客户端进行非默认设置,就无法在 IE11 中运行小程序。小程序仍然可以运行,但前提是最终用户或管理员进行必要的设置以使 IE 与 64 位 JRE 一起工作。 JRE 的安装不会进行这些设置,它们仅破坏 32 位插件并将 IE11 恢复为单进程模型。所以这只适用于受控环境。

有关设置,请参阅此问题: Run 64 bit Java with Internet explorer 11

理论上,即使不强制 IE 使用 64 位设置,java web start 也应该可以工作,然后您可以在 webstart appletviewer 中运行不需要 javascript 绑定的 applet。因此,在非常特殊的情况下,可以选择从默认的 IE11 和 JRE10 开始运行小程序。

见:https://docs.oracle.com/javase/7/docs/technotes/guides/jweb/applet_migration.html

有点好奇,这里实际上有一个 32 位 Windows 版本的 openjdk 10:https://github.com/ojdkbuild/ojdkbuild。 它确实包含 Ice Tea Web (ITW) 启动器,但它使用 npapi,因此现在不再适用于浏览器内的小程序。

【讨论】:

    【解决方案2】:

    请参阅下面的链接。

    EBS 11i 认证仍在等待中

    我们计划通过 EBS 11i 认证 IE 11。该认证目前正在进行中,即将发布。

    如果您运行的是 EBS 11i,则必须确保您的任务关键型桌面保留在较早认证的浏览器上,直到此认证完成。截至本文发表时,经过认证的浏览器包括适用于 Windows 桌面的 IE 10 和 Firefox ESR 31。

    您可以使用 Microsoft 的 Internet Explorer 11 Blocker Toolkit 来阻止自动更新:

    https://blogs.oracle.com/stevenchan/internet-explorer-11-certified-with-e-business-suite-122-and-120

    【讨论】:

      猜你喜欢
      • 2018-03-04
      • 2012-02-11
      • 2010-10-21
      • 2013-06-21
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2012-05-19
      • 2013-03-12
      相关资源
      最近更新 更多