Java 7 更新 45 - 安全访问控制异常



我刚刚将我的计算机(Windows 8,Windows 7和OS X Mountain Lion)升级到Java 7更新45,我的Java小程序不再工作了。我在控制台中收到以下异常:

java.lang.reflect.InvocationTargetException
at java.awt.EventQueue.invokeAndWait(Unknown Source)
at java.awt.EventQueue.invokeAndWait(Unknown Source)
at org.lwjgl.util.applet.AppletLoader.run(AppletLoader.java:906)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ExceptionInInitializerError
at org.lwjgl.Sys.createImplementation(Sys.java:124)
at org.lwjgl.Sys.<clinit>(Sys.java:111)
at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
at     com.jme.system.lwjgl.LWJGLDisplaySystem.setVSyncEnabled(LWJGLDisplaySystem.java:109)
at cohort.Utilities.CohortApplet.init(CohortApplet.java:105)
at avc.TackFoot3D.AVC_Applet.init(AVC_Applet.java:167)
at org.lwjgl.util.applet.AppletLoader.switchApplet(AppletLoader.java:1330)
at org.lwjgl.util.applet.AppletLoader$2.run(AppletLoader.java:909)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied     ("java.util.PropertyPermission" "org.lwjgl.util.Debug" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
at java.lang.Boolean.getBoolean(Unknown Source)
at org.lwjgl.LWJGLUtil$4.run(LWJGLUtil.java:454)
at org.lwjgl.LWJGLUtil$4.run(LWJGLUtil.java:452)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.LWJGLUtil.getPrivilegedBoolean(LWJGLUtil.java:452)
at org.lwjgl.LWJGLUtil.<clinit>(LWJGLUtil.java:265)
... 22 more

我不知道为什么这已经停止工作。显然有一些安全更新破坏了它,但我看不到它是什么。所有罐子都使用相同的解冻证书签名。 清单文件都包含"受信任库:true"和"权限:所有权限"属性。 我也尝试了代码库属性,但这没有任何作用。我已经阅读了更新 45 发行说明,但看不到任何会导致这种行为的内容,但显然我错过了一些东西。谁能帮忙?

此问题的原因是 Java 7 Update 45 和 LWJGL 安全要求之间的兼容性问题...甚至LWJGL网站(http://lwjgl.org/applet/)和Nvidia网站上的小程序也停止工作了......

对于

匆忙的用户来说,此问题的临时解决方法是实际修改 LWJGL 库和小程序加载器,以允许在不考虑安全措施的情况下运行小程序......这是一项令人烦恼的任务,从安全角度来看是不可靠的

对此的永久修复是等到 LWJGL 发布更新,因为最新更新是"LWJGL 2.9.0"星期日,四月 21st,2013 年 4 月 45 日之前,即使在 2014 年 2 月 14 日的下一次 Java 更新中修复后,此问题也可能再次出现,因为它是一个重大更新,可能包含更多安全措施......

你可能想试试 u25 - 它使用调用和事件队列破坏了很多东西。 换句话说,我认为这可能与此错误有关,而不是更新 45。

NullPointerException in invokeLater while run through Java Webstart

最新更新