Java权限基础

Java权限控制器是什么鬼?

首先需要一个权限文件。

这里使用到一个命令行工具policytool。这个在JDK bin目录下面。

举个例子,以下代码默认是可以运行的

public class Main {

 

public static void main(String[] args) {

System.out.println(System.getProperty("user.home"));

}

 

}

但是我加上严格权限参数则不能运行。

-Djava.security.manager

加上这个之后,就是开启权限机制,就会报错。

Exception in thread "main" java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.home" "read")

at java.security.AccessControlContext.checkPermission(AccessControlContext.java:457)

at java.security.AccessController.checkPermission(AccessController.java:884)

at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)

at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1294)

at java.lang.System.getProperty(System.java:714)

at permission.Main.main(Main.java:9)

那么怎样才能不报错,怎样才能给这个权限呢?

我使用policytool打开默认的权限文件。我的电脑是位于这个位置。

C:\Program Files\Java\jdk1.8.0_20\jre\lib\security\java.security

我打开之后是这个样子的:

 Java权限基础_第1张图片

那么现在就加上权限。

 Java权限基础_第2张图片

再次运行就有了权限了。打印结果:

C:\Users\Administrator。

你可能感兴趣的:(java,J2SE,权限,安全,策略)