【问题标题】:java.security.AccessControlException: access denied ("java.util.PropertyPermission" "jna.boot.library.path" "read")java.security.AccessControlException:访问被拒绝(“java.util.PropertyPermission”“jna.boot.library.path”“读取”)
【发布时间】:2013-04-10 06:40:18
【问题描述】:

我在运行已签名的网络小程序时遇到了一些问题,

它在 Eclipse 中运行良好,但是一旦我上传到网页,我就会收到以下错误日志:

Exception in thread "AWT-EventQueue-2" java.lang.ExceptionInInitializerError
at com.dermalog.imaging.capturing.cwrap.vc.DermalogvcLibrary.<clinit>(DermalogvcLibrary.java:30)
at com.dermalog.imaging.capturing.DeviceManager.<clinit>(DeviceManager.java:33)
at MyPackage.Bio.GetDevice(Bio.java:218)
at MyPackage.Bio.StartDevice(Bio.java:150)
at MyPackage.Bio.access$0(Bio.java:144)
at MyPackage.Bio$1.run(Bio.java:80)
at java.security.AccessController.doPrivileged(Native Method)
at MyPackage.Bio.<init>(Bio.java:76)
at MyPackage.Test$2.actionPerformed(Test.java:45)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(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.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.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" "jna.boot.library.path" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
at com.sun.jna.Native.loadNativeLibrary(Native.java:650)
at com.sun.jna.Native.<clinit>(Native.java:109)
... 44 more

我认为这是突破沙盒并与计算机通信的问题。

使用 AccessController.doPrivileged 可以解决问题吗?除了修改策略文件,我还有哪些选择?

【问题讨论】:

  • “使用 AccessController.doPrivileged 可以解决问题吗?” 可能,但前提是它是一个受信任的小程序,其方法是从 JS 调用的。否则,一旦用户确定信任提示,它就应该被信任。

标签: java security sandbox access-control accesscontrolexception


【解决方案1】:

事实证明,我遇到的问题是我引用的 Jar 文件(在主 Jar 之外)没有签名,在签名后问题就消失了。

【讨论】:

    猜你喜欢
    • 2011-12-29
    • 1970-01-01
    • 2012-05-14
    • 2011-09-04
    • 2013-10-25
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多