我的applet无法实现以下声明:
Method p11Getinstance = PKCS11.class.getMethod("getInstance", String.class,
String.class, CK_C_INITIALIZE_ARGS.class, Boolean.TYPE);
并抛出异常:
java.security.AccessControlException:拒绝访问(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;
}
});
然后使用我的证书签署applet的jar文件,这个例外是否仍会出现?
答案 0 :(得分:-2)
我认为您必须在.java.policy
文件中添加以下权限:
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.pkcs11.wrapper";
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.pkcs11";