java7中的Java小程序在IE9中的页面加载/重新加载失败

java7中的Java小程序在IE9中的页面加载/重新加载失败,java,applet,internet-explorer-9,Java,Applet,Internet Explorer 9,我正在使用运行web应用程序(ASP.NET)中的小程序。它在Java6uxx上运行良好 在Java 7u5的最新更新之后,我遇到了一个无法理解的问题。在IE9上,小程序一开始工作正常,但在任何重新加载(F5或回发)后,小程序就会冻结 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

我正在使用运行web应用程序(ASP.NET)中的小程序。它在Java6uxx上运行良好

在Java 7u5的最新更新之后,我遇到了一个无法理解的问题。在IE9上,小程序一开始工作正常,但在任何重新加载(F5或回发)后,小程序就会冻结

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上,小程序运行良好。在将JRE版本降级到6-1之后,所有浏览器(包括IE-9)都可以正常工作

我已经阅读了两份Java/Oracle/IE9票据,发现了相同的问题,并尝试了规定的解决方法,但都没有帮助:

  • 禁用/启用任何
  • 安全性、ActiveX过滤、兼容性模式等)
顺便说一句:在IE9冻结后,我检查了iexplorer.exe进程,它会占用130-180 Mb的内存。删除此进程后,iexplorer.exe将重新加载并正常工作,直到下次重新加载浏览器/小程序

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


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

我们在几个Java小程序中看到了相同的行为

这个问题实际上是在Java7U4中引入的,并一直延续到7u5中

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

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

  • 小程序在第n次加载尝试时根本不加载
  • 浏览器死锁
我们已经就这个问题向Oracle输入了一个bug,并且没有收到太多的响应

这个问题可以通过Oracle自己的Java测试小程序轻松重现:

http://www.java.com/en/download/testjava.jsp
这是我们输入的错误。你也参加了吗

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7176027
这对我们的产品/客户来说是一个相当灾难性的问题


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

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

我的小程序也有这些问题,而且只有IE9和Java7有这些问题。我在网上找到的建议都没有任何改善


幸运的是,甲骨文公司一定有人听到了所有的抱怨。Java 7 Update 6在2012年8月22日成为默认的JRE下载,我们的小程序现在运行良好——即使没有我加入的所有“修复程序”。

我以前遇到过这个问题。我不明白为什么会发生这种情况,但我通过在每次加载时使用不同的VM解决了这一问题:

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

我知道这是一个非常古老的问题,但我认为我们这些在旧系统中有这个问题的人确实需要一个答案。在我的例子中,我没有重新加载任何东西,我的小程序是使用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>
var属性={
代码:“…Applet.class”,
存档:“…applet.jar”,
代码库:'/context',
宽度:1,
身高:1,,
单独的jvm:true
};
变量参数={
someCallback:'opener.appletCallback',
};
var-aPopup=null;
函数deployAppletingApopup(){
setTimeout(函数(){
aPopup=窗口。打开(“”,,‘宽度=100,高度=100’);
aPopup.document.open();
runappletintocument(aPopup.document、属性、参数,“1.6”);
aPopup.document.close();
}, 10);
}
函数appletCallback(){
setTimeout(函数(){
如果(向上){
aPopup.close();
}
aPopup=null;
}, 10);
}
[...]
将小程序部署到弹出窗口中

我使用的是Windows 10、IE11和jdk-8u181-Windows-i586。此问题仅在Java 8中出现。

检查错误数据库,如果未发现任何错误,则提出报告。