gpt4 book ai didi

java - 如何让JRE访问自己?

转载 作者:行者123 更新时间:2023-11-29 08:49:07 27 4
gpt4 key购买 nike

因此,我设置了自定义 Policy 并启用了 SecurityManager 并决定我的应用程序不需要任何文件权限。

但是如果我尝试使用 https 协议(protocol)打开一个 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 中的某些类无法加载 native 库,因为它没有获得文件读取权限。

有没有什么好的方法可以为JDK自己的类设置一个宽松的策略?

最佳答案

似乎没有办法将 JDK 的权限与我的 代码的权限分开。它们都是由“空”类加载器加载的,因此它们都获得相同的权限。如果有更好的方法,请告诉我。

现在我允许空类加载器的这个权限:

final String recursiveSuffix = File.separator + "-";
final String javaPath = System.getProperty("java.home") + recursiveSuffix;
new FilePermission(javaPath, "read,execute");

关于java - 如何让JRE访问自己?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23585873/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com