我想在运行时将新的RuntimePermission添加到已存在的权限集( java.policy )。 这是我的代码:
ProtectionDomain domain = MyClass.class.getProtectionDomain();
final PermissionCollection domainPerms = domain.getPermissions();
Enumeration<Permission> oldPerms = domainPerms.elements();
PermissionCollection newPerms = new Permissions();
//add the old permissions to
while (oldPerms.hasMoreElements()) {
newPerms.add(oldPerms.nextElement());
}
//add my new permission
RuntimePermission rtPermission = new RuntimePermission("accessDeclaredMembers");
newPerms.add(rtPermission);
...
但是如何使用newPerms
对象?
此外,我尝试将新权限添加到oldPerms
,但由于oldPerms
是只读的,因此我得到了一个很好的SecurityException。
谢谢!
答案 0 :(得分:0)
Permissions
类型有一个非常奇怪的API,尽管你不能修改一个已设置为只读的对象也不足为奇。 ProtectionDomain
应该是不可变的。
然而,由于大约1.4ish,你可以拥有符合当前ProtectionDomain
的“动态”Policy
。但是,尝试动态更改权限并不是我建议的,因为它没有多大意义。更好地使用功能方法创建API - SecurityManager
只是关于错误API的裂缝。