简体   繁体   English

JRE / JDK / Java 9的64位插件与IE 11 64位不兼容

[英]64 bit plugin of JRE/JDK/Java 9 is incompatible with IE 11 64 bit

I'm trying to run applet with JRE 9 on internet explorer 11 (64 bit), but it doesn't run. 我正在尝试在Internet Explorer 11(64位)上使用JRE 9运行applet,但它没有运行。 I've tried on windows 10 and server 2012. In my application, we detect the installed jre version using deployJava.js. 我试过Windows 10和Server 2012.在我的应用程序中,我们使用deployJava.js检测已安装的jre版本。 If no version is found a download prompt is displayed. 如果未找到任何版本,则会显示下载提示。 This detection is done through javascript function getJREs which can be found here . 这个检测是通过javascript函数getJREs完成的,可以在这里找到。 See snippet below: 请参阅下面的代码段:

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;
}

In the case of JRE 9 this function is not able to detect the java version and applet failed to load. 在JRE 9的情况下,此函数无法检测到java版本,并且applet无法加载。 Here are the discussionsI saw which talks in same lines: 以下是我看到的讨论内容相同:

  1. JDK-8188306 JDK-8188306
  2. JDK-8193431 JDK-8193431
  3. JDK-8162522 JDK-8162522
  4. This microsoft answer 这个微软的回答
  5. This SO OP solves it using 32 bit JRE . 这个SO OP使用32位JRE解决它 In my case its not possible as Oracle didn't release the 32 bit version of JRE/JDK 9. 在我的情况下,它不可能,因为Oracle没有发布32位版本的JRE / JDK 9。

Also I could see that both the Java SSV plugin helpers are listed as incompatible in the list of IE addons. 此外,我可以看到两个Java SSV插件助手在IE插件列表中列为不兼容。

I've tried to load the applet with JRE 1.8 (both 32 bit and 64 bit), it loads perfectly fine. 我试图用JRE 1.8(32位和64位)加载applet,它加载完全正常。

I understand that applets have been deprecated in java 9, but deprecation doesn't mean they won't run, do they? 我知道applet在java 9中已被弃用,但弃用并不意味着它们不会运行,是吗?

PS: I would appreciate if you don't ask me not to use applet as I have to do it for legacy purposes. PS:如果你不要求我不使用applet,我将不胜感激,因为我必须为了传统目的而这样做。 So, thanks in advance! 所以,提前谢谢!

The end of 32-bit JRE by Oracle makes it impossible to run applets in IE11 without making non-default settings to it for clients installing the Oracle JRE. Oracle的32位JRE结束使得无法在IE11中运行applet而不为安装Oracle JRE的客户端进行非默认设置。 Applets can still run but only if the end-user or admin makes the necessary settings to make IE work with 64-bit JRE. Applet仍然可以运行,但前提是最终用户或管理员进行必要的设置以使IE与64位JRE一起工作。 The install of the JRE doesn't make these settings, they break 32-bit only plugins and revert IE11 to a one process model. JRE的安装不会进行这些设置,它们只会破坏32位插件并将IE11还原为一个进程模型。 So this will only work in a controlled environment. 所以这只能在受控环境中工作。

See this question for settings: Run 64 bit Java with Internet explorer 11 有关设置,请参阅此问题: 使用Internet Explorer 11运行64位Java

Theoretically java web start should work even without forcing 64-bit settings for IE and then you could run an applet that doesn't require javascript bindings in the webstart appletviewer. 理论上,即使不强制使用IE的64位设置,java web start也应该可以工作,然后你可以在webstart appletviewer中运行一个不需要javascript绑定的applet。 So, in very specific circumstances that might be an option to run an applet, starting from default IE11 with JRE10. 因此,在非常具体的情况下,可能是运行applet的选项,从默认IE11开始使用JRE10。

See: https://docs.oracle.com/javase/7/docs/technotes/guides/jweb/applet_migration.html 请参阅: https//docs.oracle.com/javase/7/docs/technotes/guides/jweb/applet_migration.html

A little excursion for the curious, there is actually a 32-bit Windows build of openjdk 10 here: https://github.com/ojdkbuild/ojdkbuild . 好奇的一点点游览,实际上有一个32位Windows版本的openjdk 10: https//github.com/ojdkbuild/ojdkbuild It does include the Ice Tea Web (ITW) launcher, but this uses npapi, so doesn't work anymore today for in-browser applets. 它确实包括Ice Tea Web(ITW)启动器,但它使用npapi,所以今天不再适用于浏览器内小程序。

Refer to the link below. 请参阅以下链接。

Certifications with EBS 11i still pending EBS 11i的认证仍未解决

We plan to certify IE 11 with EBS 11i. 我们计划用EBS 11i认证IE 11。 This certification us underway now and will be released soon. 我们正在进行此认证,并将很快发布。

If you're running EBS 11i, you must ensure that your mission-critical desktops remain on an earlier certified browsers until this certification is completed. 如果您正在运行EBS 11i,则必须确保您的任务关键型桌面保留在早期认证的浏览器上,直到此认证完成为止。 As of the time this article was published, certified browsers include IE 10 and Firefox ESR 31 for Windows desktops. 截至本文发布时,经过认证的浏览器包括用于Windows桌面的IE 10和Firefox ESR 31。

You can block automatic updates by using Microsoft's Internet Explorer 11 Blocker Toolkit: 您可以使用Microsoft的Internet Explorer 11 Blocker Toolkit阻止自动更新:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM