我有以下政策文件:
grant codeBase "file:./Cookie.jar",
Principal javax.security.auth.kerberos.KerberosPrincipal
"MyUsr@domain.com"
Principal javax.security.auth.kerberos.KerberosPrincipal
"OtherUsr@domain.com" {
permission java.util.PropertyPermission "java.vm.*", "read,write";
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "user.home", "read";
permission java.io.FilePermission "foo.txt", "read";
};
grant {
permission java.util.PropertyPermission "*","read,write";
permission javax.security.auth.AuthPermission "createLoginContext.Cookie";
permission java.security."*";
};
每当我执行:java -jar Cookie.jar
时,我的程序按预期工作,我在加载log4j时没有问题。
但是,当我执行以下操作以启用安全管理器时(使用上述策略文件):
java -Djava.security.manager -Djava.security.policy==java.policy -jar Cookie.jar -Djava.security.auth.login.config=auth.conf
我最终得到了这个错误:
StatusLogger Log4j2找不到日志记录实现。请加上lo g4j-core到类路径。使用SimpleLogger登录控制台...
如果我没有在类路径上使用log4j,那么我会得到同样的错误,但是,log4j在类路径上。
我确定该问题是由安全经理引起的。我只能假设我需要为我的策略文件添加一定的权限才能正确加载Log4j2库,但我无法弄清楚我需要添加哪些权限。
有人可以告诉我我在这里失踪了什么,并解释为什么会这样吗?谢谢!
编辑:Dang,我以某种方式解决了这个问题,但不记得究竟是怎么回事。如果我记得的话,我会在这里更新。