2011-08-29 109 views
2

我的小应用程序不能执行以下语句:java.lang.RuntimePermission accessClassInPackage.sun.security.pkcs11.wrapper?

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文件,将这个异常仍然会出现?

回答

-2

我认为你必须添加下面的权限在.java.policy文件:

permission java.lang.RuntimePermission "accessClassInPackage.sun.security.pkcs11.wrapper"; 
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.pkcs11"; 
+1

-1,因为这个问题显然已经知道这是一个可能的解决办法:“如果我在JAVAHOME编辑java.policy中,上述异常会消失,但我不想这样。“如果你知道这个修复只是一个可能的修复方法,请告诉它。 –

相关问题