Вызовы LiveConnect блокируются на 7u45, так как появилась Java 7u51

У меня есть страница с апплетом Java, который имеет следующий код JavaScript, который вызывает вызов LiveConnect, когда окно закрывается, чтобы выполнить некоторые задачи очистки:

window.onbeforeunload = function(e) {
    var result = document.OutApplet.closeCheck();

До вчерашнего дня это работало так, как ожидалось, и выполняло задачи очистки в апплете.

Теперь, когда Java 7u51 доступен, я сегодня получил доступ к этому апплетам и выбрал "Позже", когда было предложено обновить его до последней версии Java. Теперь, когда я закрываю окно, я получаю ошибку JavaScript:

Объект не поддерживает свойство или метод 'closeCheck'

Просто, чтобы уточнить это с установленной Java 7u45.

Является ли это ожидаемым поведением или есть что-нибудь, что я могу сделать, чтобы он все еще работал на 7u45? Я не могу найти упоминания об этом в примечаниях к выпуску, и до 7u51 наш звонок с живым подключением все равно будет работать, не находясь на последней базовой линии безопасности.

Обновление

Вышеупомянутое было с моей установкой безопасности Java как Высокой.

Я изменил его на Medium и повторил выше. Теперь я получаю сообщение о том, хочу ли я разрешить или заблокировать вызов LiveConnect.

Allow LiveConnect prompt

Кажется, теперь есть недокументированное (насколько я могу найти) требование, чтобы LiveConnect работал, только если вы находитесь на базовой линии безопасности (7u51).

Обратите внимание, что вызов LiveConnect для апплета работает без каких-либо изменений в апплете после обновления до 7u51

Ответ 1

Это известная ошибка Java, затрагивающая все версии от 7u25 до 7u45:

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

Единственное решение - перейти на 7u45 7u51 или установить ползунок безопасности java на "Medium".

[Изменить] исправлена ​​версия исправления в соответствии с сообщением об ошибке

Ответ 2

Относительно того, почему этот недавно (вчера) начал сбой, было то, что базовый уровень был обновлен https://javadl-esd-secure.oracle.com/update/baseline.version, теперь, если вы редактируете C:\Пользователи\username\AppData\LocalLow\Sun\Java\Deployment\security\baseline.versions и измените 1.7.0_51 на 1.7.0_45 и сохраните файл, он должен снова начать работать (но в конечном итоге будет обновлен, вероятно, после некоторого произвольного времени).

Ответ 3

1) Закрыть все браузеры и программы

2) В проводнике Windows перейдите к% localappdata% low\Sun\Java\Deployment

3) Откройте файл с именем "deployment.properties"

4) Добавьте в нижнюю строку в конце этого файла

                 deployment.expiration.check.enabled=false

5) Сохраните и закройте файл

Ответ 4

Такая же проблема здесь.

Oracle предупредил о новых обязательных (см. ниже) вариантах еще в сентябре. Мы реализовали и доставляли их в конце прошлого года, но сегодня они, похоже, не работают...

https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html

Ответ 5

Другое решение, если вы не можете обновить JRE (застряли между 1.7.0_25 и 1.7.0_45):

  • откройте панель управления Java из 1,7 JRE (javacpl.exe)
  • перейдите на вкладку "Дополнительно"
  • снимите флажок с следующей опции "Java Plug-in": "Включите плагин Java следующего поколения"