2011-08-29 56 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中,上述異常會消失,但我不想這樣。「如果你知道這個修復只是一個可能的修復方法,請告訴它。 –

相關問題