我的小程序无法执行以下语句:
Method p11Getinstance = PKCS11.class.getMethod("getInstance", String.class,
String.class, CK_C_INITIALIZE_ARGS.class, Boolean.TYPE);
并抛出异常:
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.security.pkcs11.wrapper)
如果我在javahome中编辑java.policy
,上面的异常就会消失,但我不想这样走。我想编辑我的代码。
当我尝试添加一些语句时:
AccessController.doPrivileged(new PrivilegedAction() {
@Override
public Object run() {
try {
p11Getinstance = PKCS11.class.getMethod("getInstance", String.class, String.class, CK_C_INITIALIZE_ARGS.class, Boolean.TYPE);
} catch (Exception e) {
}
return null;
}
});
然后用我的证书对小程序的jar文件进行签名,还会出现这个异常吗?
最佳答案
我认为您必须在 .java.policy
文件中添加以下权限:
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.pkcs11.wrapper";
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.pkcs11";
关于java.lang.RuntimePermission accessClassInPackage.sun.security.pkcs11.wrapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7228408/