簡體   English   中英

Java小程序在IE9中的頁面加載/重新加載時在Java7中失敗

[英]Java applet fails in java7 on page load/reload in IE9

我正在Web應用程序(ASP.NET)中運行Applet,並使用deployJava.js進行 部署 它在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票證,並嘗試了規定的解決方法,但它們並沒有幫助:

順便說一句:IE9凍結后,我檢查了iexplorer.exe進程,它獲取了130-180 Mb的RAM。 刪除此過程后,iexplorer.exe將重新加載並正常工作,直到重新加載下一個瀏覽器/小程序。

如果我不夠清楚,請詢問更多詳細信息。 謝謝。

誰能幫助我解決IE9&Java7問題?

我們在IE9中也遇到了同樣的問題,並且能夠通過使用“對象”-標記而不是“小程序”來解決這些問題,並通過HTML標頭中的X-UA元標記將IE9強制為IE9-文檔模式。 這都解決了Java6-和最新的Java7運行時的穩定性問題。

我們已經在幾個Java小程序中看到了相同的行為。

這個問題實際上是在Java 7u4中引入的,並一直持續到7u5。

更糟糕的是……罪魁禍首似乎是Java插件本身……因此禁用7u5和啟用6uXX不足以解決該問題。 您必須卸載 Java 7。

基本上,我們看到兩個問題:

  • Applet在第n次加載嘗試中根本不加載
  • 瀏覽器死鎖

我們已經針對此問題在Oracle中輸入了一個錯誤,並且沒有收到很多答復。

可以使用Oracle自己的Java測試小程序輕松重現該問題:

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

這是我們輸入的錯誤。 您也輸入過嗎?

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

對於我們的產品/客戶而言,這是一個災難性的問題。

如果/當您輸入Oracle的錯誤報告時,請同時參考上面的錯誤!

我的Applet也遇到了所有這些問題-僅限於IE9和Java7。我在網上發現的所有建議都沒有任何改善。

幸運的是,Oracle一定有人在聽所有抱怨。 Java 7 Update 6在2012年8月22日成為默認的JRE下載,並且即使沒有我輸入的所有“修復程序”,我們的Applet現在都可以正常運行。

我以前有這個問題。 我不明白為什么會這樣,但是我通過在每次加載時使用不同的VM來解決了它:

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

我知道這是一個非常老的問題,但是我認為在舊系統中有這個問題的我們中的人確實需要一個答案。 就我而言,我沒有重新加載任何東西,我的applet是使用javascript(deploy.js)注入的,但我認為相同的解決方案也可以工作。 因此,在兩天里嘗試了很多事情之后,這就是我可以使用的解決方案:

將Applet加載到彈出窗口中,並在每次執行后將其關閉 我認為這是可行的,因為每次瀏覽器將彈出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中存在此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM