在IE9中的页面加载/重新加载中,Java applet在java7中失败

时间:2012-06-26 10:48:38

标签: java applet internet-explorer-9

我正在使用deployment在Web应用程序(ASP.NET)deployJava.js中运行Applet。它在Java 6 u XX上工作正常。

在Java 7u5的最新更新之后,我遇到了一个难以理解的问题。在IE9上,Applet工作正常,但是在重新加载(F5或回发)后,Applet只会冻结。

Java Plug-in 10.5.0.05
Using JRE version 1.7.0_05-b05 Java HotSpot(TM) Client VM
User home directory = C:\Users\***

basic: Starting applet teardown
basic: Finished applet teardown
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@2e749c
plugin2manager.parentwindowDispose

在Firefox和Chrome上,Applet运行正常。将JRE版本降级为6之后,所有浏览器(包括IE-9)都能正常工作。

我已经阅读了几张带有相同问题的Java / Oracle / IE9门票并尝试了规定的解决方法,但他们没有帮助:

BTW:在IE9冻结之后,我检查了iexplorer.exe进程并获得了130 - 180 Mb的RAM。删除此过程后,iexplorer.exe重新加载并正常工作,直到下一个浏览器/小程序重新加载。

如果我不够清楚,请询问更多细节。感谢。

有人可以帮我解决IE9和Java7问题吗?

5 个答案:

答案 0 :(得分:3)

我们在IE9中遇到了同样的问题,并且能够通过使用“object”-Tag而不是“applet”来解决这些问题,并通过HTML中的X-UA元标记强制IE9进入IE9文档模式头。这既包括Java6的固定稳定性问题,也包括最新的Java7运行时。

答案 1 :(得分:2)

我们已经看到了与我们的几个Java小程序相同的行为。

这个问题实际上是在Java 7u4中引入的,并且一直持续到7u5。

更糟糕的是...罪魁祸首似乎是Java插件本身...因此禁用7u5并启用6uXX还不足以解决这个问题。您必须卸载 Java 7。

基本上我们看到两个问题:

  • Applet根本没有在第n次加载尝试时加载
  • 浏览器死锁

我们已针对此问题向Oracle提出了一个错误,但未收到太多响应。

使用Oracle自己的Java Test Applet可以轻松复制该问题:

http://www.java.com/en/download/testjava.jsp

以下是我们输入的错误。你也输了一个吗?

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7176027

对于我们的产品/客户来说,这是一个相当灾难性的问题。

如果/当您输入Oracle的错误报告时,请参考上面的错误!

答案 2 :(得分:1)

我的Applet也遇到了所有这些问题 - 只有IE9和Java 7.我在网上找到的任何建议都没有任何改进。

幸运的是,甲骨文的某些人一直在听取所有的抱怨。 Java 7 Update 6于2012年8月22日成为默认的JRE下载,我们的Applet现在运行正常 - 即使没有我提供的所有“修复”。

答案 3 :(得分:0)

之前我遇到过这个问题。我不明白为什么会这样,但我通过在每次加载时使用不同的VM来解决它:

var attributes = {
    code: '...',
    archive: '...',
    width: '...',
    height: '...',
    separate_jvm: true
};
var parameters = {
};
var version = '1.7';
deployJava.runApplet(attributes, parameters, version);

答案 4 :(得分:0)

我知道这是一个非常老的问题,但是我认为在旧系统中有这个问题的我们中的人确实需要一个答案。 就我而言,我没有重新加载任何东西,我的applet是使用javascript(deploy.js)注入的,但是我认为相同的解决方案也可以工作。因此,在两天里尝试了很多之后,这就是解决方案我上班了:

在弹出窗口中加载小程序,并在每次执行后将其关闭。我认为这可行,因为每次浏览器将弹出DOM加载为“新”时。

var attributes = {
            code: '...Applet.class',
            archive: '...applet.jar',
            codebase: '/context',
            width: 1,
            height: 1,
            separate_jvm: true
        };
var parameters = {
        someCallback: 'opener.appletCallback',
        };

var aPopup = null;
function deployAppletInAPopup() {
    setTimeout(function () {
        aPopup = window.open('', '', 'width=100,height=100');
        aPopup.document.open();
        deployJava.runAppletIntoDocument(aPopup.document, attributes, parameters, "1.6");
        aPopup.document.close();
    }, 10);
}

function appletCallback() {
    setTimeout(function () {
        if (aPopup) {
            aPopup.close();
        }
        aPopup = null;
    }, 10);
}

[...]

<button onclick="deployAppletInAPopup()">Deploy Applet into a Popup</button>

我正在使用Windows 10,IE11和jdk-8u181-windows-i586。 仅在Java 8中存在此问题。