自Java 7u51可用以来,LiveConnect调用在7u45被阻止

时间:2014-01-15 12:16:23

标签: java javascript liveconnect

我有一个带有Java applet的页面,该applet具有以下JavaScript代码,当窗口关闭时,它会执行LiveConnect调用以执行一些清理任务:

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

直到昨天,它按预期工作,并在小程序内执行清理任务。

现在Java 7u51可用了,我今天访问了这个applet,并在提示更新到最新版本的Java时选择了“Later”。现在当我关闭窗口时,我收到一个JavaScript错误:

  

Object不支持属性或方法'closeCheck'

只是为了澄清这是安装了Java 7u45的。

这是预期的行为还是我可以做些什么让它仍然可以在7u45上运行?我在发行说明中找不到任何提及,在7u51之前,我们的实时连接呼叫仍然可以在最新的安全基线上运行。

更新

以上是我的Java安全设置为High。

我已将其更改为“中”并重复上述操作。我现在收到一条消息,询问我是否要允许或阻止LiveConnect呼叫。

Allow LiveConnect prompt

现在似乎有一个未记录的(据我所知)要求LiveConnect仅在您处于安全基线(7u51)时才能工作。

请注意,在我更新为7u51后,对applet的LiveConnect调用无需对applet进行任何更改

5 个答案:

答案 0 :(得分:6)

这是一个已知的Java错误,影响从7u25到7u45的所有版本:

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

只有解决方案是升级到 7u45 7u51或将java安全滑块设置为“中”。

[编辑]根据错误报告

更正修正版本

答案 1 :(得分:1)

至于最近(昨天)开始失败的原因是因为基线已更新https://javadl-esd-secure.oracle.com/update/baseline.version,现在如果您编辑C:\ Users \ username \ AppData \ LocalLow \ Sun \ Java \ Deployment \ security \ baseline .versions并将1.7.0_51更改为1.7.0_45并保存文件,它应该重新开始工作(但最终可能会在一段任意时间之后更新)。

答案 2 :(得分:1)

1)关闭所有浏览器和程序

2)在Windows资源管理器中,转到%localappdata%low \ Sun \ Java \ Deployment

3)打开名为“deployment.properties”的文件

4)在此文件末尾添加以下行

                 deployment.expiration.check.enabled=false

5)保存并关闭文件

答案 3 :(得分:0)

这里也有同样的问题。

甲骨文曾在9月份警告过新的强制性(见下文)选项。 我们在去年年底实施并交付了它们,但今天它们似乎没有用......

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

答案 4 :(得分:0)

另一种解决方案,如果你无法升级你的JRE(卡在1.7.0_25和1.7.0_45之间):

  • 打开1.7 JRE(javacpl.exe)的Java控制面板
  • 转到高级标签
  • 取消选中以下“Java Plug-in”选项:'启用下一代Java插件'