2014-01-15 95 views
10

我有一个Java小程序,它具有以下的JavaScript代码,这使得当窗口被关闭,以执行一些一LiveConnect的通话页面清理任务:LiveConnect的呼叫阻塞7u45自从Java 7u51面世

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

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

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

Object doesn't support property or method 'closeCheck'

只是为了说明这是安装了Java 7u45。

这是预期的行为还是有什么我可以做,使它仍然工作在7u45?在发行说明中我找不到任何提及,在7u51之前,我们的实时连接呼叫仍然可以在没有处于最新安全基线的情况下运行。

更新

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

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

Allow LiveConnect prompt

现在看来有一个无证(只要我能找到)的要求,如果你是在安全基准(7u51)LiveConnect的才有效。

注意LiveConnect的调用applet的工作没有任何改变的小程序,一旦我已经更新到这里7u51

+3

的我只是发现有类似的问题这篇文章从别人:https://community.oracle.com/thread/2620141 –

回答

6

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

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

唯一的办法就是升级到 7u45 7u51或设置Java安全性滑块设置为“中”。

[编辑]根据bug报告

+0

那会解释一下。尽管如此,仍然会迫使我们的所有用户更新到7u51,而现在这是基准线。 –

+1

“唯一的解决办法是升级到7u45”。我认为你的意思是升级到7u51。 –

+0

我们确实遇到了7u45的问题,所以您必须是正确的@chrisr。事实上,这个错误报告明确指出,这将被固定在7u51 – Cerber

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

+0

我我不确定这是相关的。我们也实现了这些,我们的小程序仍然运行良好。我们面临的问题是它运行后,我们试图从JS进行LiveConnect调用。 –

+1

@ChrisR你看过[Caller-Allowable-Codebase Attribute](http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#caller_allowable),它控制谁可以使用LiveConnect – Cerber

+1

是的,从我们第一次看到您几个月前链接到的博客文章开始,我们就已经具备了该属性。我已经更新了上面的答案,说我们的小程序在7u51上保持不变。鉴于它也习惯于像今天7点45分那样工作,直到今天我能想到的唯一变化就是安全基线,因此我认为现在只有在安全基线时才有效。 –

1

,为什么这最近(昨天)启动失败是因为如果编辑基线已经更新https://javadl-esd-secure.oracle.com/update/baseline.version,现予以更正修复版本C:\ Users \用户名\ AppData \ LocalLow \ Sun \ Java \ Deployment \ security \ baseline.versions并将1.7.0_51更改为1.7.0_45并保存该文件,它应该再次开始工作(但最终可能会在某些任意时间后更新)。

0

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

  • 打开JRE 1.7的Java控制面板(javacpl.exe)
  • 去高级选项卡
  • 取消选中下面的“Java插件”选项:“启用下一代Java插件”
1

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

2)在Windows资源管理器,转到%LOCALAPPDATA%低\太阳\的Java \部署

3)打开名为“deployment.properties”

4)添加在下面的一行在结束文件这个文件

    deployment.expiration.check.enabled=false 

5)保存并关闭文件

+0

这可能会起作用(我还没有尝试过),但是在用于访问小程序的每台计算机上进行这种更改不仅仅是将它们全部更新为Java 7u51。 –