【发布时间】:2014-05-10 20:17:22
【问题描述】:
因此,我设置了一个自定义 Policy 并启用了 SecurityManager 并决定我的应用不需要任何文件权限。
但如果我尝试使用https 协议打开一个 URL,我会收到以下错误:
access: access denied ("java.io.FilePermission" "jdk1.8.0/jre/lib/ext/amd64/libsunec.so" "read")
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1329)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:447)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.io.File.exists(File.java:814)
at sun.misc.Launcher$ExtClassLoader.findLibrary(Launcher.java:222)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1820)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at sun.security.ec.SunEC$1.run(SunEC.java:60)
at sun.security.ec.SunEC$1.run(SunEC.java:58)
因此,JRE 中的某些类无法加载本机库,因为它没有获得文件读取权限。
有没有为 JDK 自己的类设置许可策略的好方法?
【问题讨论】:
-
确保用于启动 Java 应用程序的用户可以执行相关文件
-
@Sebastian 这个错误来自Java,而不是操作系统。
-
分页@Chris-Dennis:有什么建议吗? :)
标签: java securitymanager