Как разрешить JRE получить доступ к себе?

Итак, я настроил кастом Policy и включил SecurityManager и решил, что мне не нужны никакие права доступа к файлу для моего приложения.

Но если я попытаюсь открыть URL с https протокол, я получаю эту ошибку:

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?

1 ответ

Кажется, нет никакого способа отделить разрешения для JDK от разрешений для моего кода. Оба они загружаются загрузчиком классов "null", поэтому оба получают одинаковые разрешения. Если есть лучший способ, пожалуйста, дайте мне знать.

Прямо сейчас я разрешаю это разрешение для загрузчика нулевого класса:

final String recursiveSuffix = File.separator + "-";
final String javaPath = System.getProperty("java.home") + recursiveSuffix;
new FilePermission(javaPath, "read,execute");
Другие вопросы по тегам