Java System.setSecurityManager()不';无法很好地处理策略文件
我希望,当使用System.setSecurityManager()+策略文件时,它应该可以工作 这里我有一个intelliJ项目,文件/目录结构如下:Java System.setSecurityManager()不';无法很好地处理策略文件,java,security,principal,Java,Security,Principal,我希望,当使用System.setSecurityManager()+策略文件时,它应该可以工作 这里我有一个intelliJ项目,文件/目录结构如下: --src --main --java --TestPrinciple.java --resources --demo.policy 然后是我的代码: public class TestPrincipal { public static void main
--src
--main
--java
--TestPrinciple.java
--resources
--demo.policy
然后是我的代码:
public class TestPrincipal {
public static void main(String[] args) {
System.setProperty("java.security.policy", "demo.policy");
System.setProperty("java.security.auth.login.config", "demo.config");
System.out.println(System.getProperty("java.home"));
System.setSecurityManager(new SecurityManager());
}
}
而demo.policy是:
grant {
permission java.util.PropertyPermission "java.home", "read";
};
它运行时出现异常:
Exception in thread "main" java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.security.policy" "write")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.System.setProperty(System.java:792)
at TestPrincipal.main(TestPrincipal.java:6)
大概
demo.policy
不允许类权限设置系统属性
还值得注意的是,在初始化安全管理器之后,代码设置了安全管理器的配置
简单的解决方案是最后设置安全管理器。可能是
demo。策略不允许类权限设置系统属性
还值得注意的是,在初始化安全管理器之后,代码设置了安全管理器的配置
简单的解决办法是将安全管理员设置在最后。该帖子的可能重复内容对我不起作用该帖子的可能重复内容对我不起作用有一刻我感到困惑。您已更改问题中的代码。将这两个版本放在一起,您似乎有一个允许代码设置安全管理器的设置,但如果没有,现有的安全管理器将阻止代码设置系统属性。另外,行号的变化有点奇怪。我在那里困惑了一会儿。您已更改问题中的代码。将这两个版本放在一起,您似乎有一个允许代码设置安全管理器的设置,但如果没有,现有的安全管理器将阻止代码设置系统属性。而且行号的变化有点奇怪。