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
我打开之后是这个样子的:
那么现在就加上权限。
再次运行就有了权限了。打印结果:
C:\Users\Administrator。