NetBeansに特定のアプリケーションのポリシーファイルを読み取らせる方法を理解しようとすると、少し問題が発生します。実際には多くの問題があります。以下のコードをご覧ください。
_ public static void main(final String[] args)
{
System.setSecurityManager(new SecurityManager());
System.setProperty("Java.security.policy","file:/C:/Users/kBPersonal/Documents/NetBeansProjects/JAASTest/JAASTest.policy");
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new JAASFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
_
何をしても、NetBeansがsecurity.policyファイルを読み取っていないことを通知する次のエラーが発生し続けます(その場所をC:\Program Files (x86)\Java\jre6\lib\security\Java.security
のメインのsecurity.policyファイルに追加しました)。ちなみに、20行目はSystem.setProperty("Java.security.policy, ...)
を設定しようとしているところです
_ Exception in thread "main" Java.security.AccessControlException: access denied (Java.util.PropertyPermission Java.security.policy write)
at Java.security.AccessControlContext.checkPermission(AccessControlContext.Java:323)
at Java.security.AccessController.checkPermission(AccessController.Java:546)
at Java.lang.SecurityManager.checkPermission(SecurityManager.Java:532)
at Java.lang.System.setProperty(System.Java:725)
at JAASTest.main(JAASTest.Java:20)
_
すべての助けは大歓迎です!
特定のセキュリティポリシーを設定する最も簡単な方法は、ランタイム引数を使用することです。たとえば、これは同じ問題に対してここで行うことです。
以下を追加します。
-Djava.security.manager -Djava.security.policy=src/dir1/dir2/important.policy
ここでsrc/dir1/dir2/important.policy
は、ファイルを指すように例で変更されますJAASTest.policy
。
System.setProperty()
メソッドを使用してポリシーファイルを追加している場合は、SecurityManager
を作成する前にそれが行われていることを確認してください。以前はSystem.setProperty()
メソッドでSecurityManager
を使用しましたが、SecurityManager
を作成する前に呼び出すと通常は機能します。
システムセキュリティマネージャを設定する前に、セキュリティポリシーを追加してください。
あなたの与えられたコードに従って最初に追加します
System.setProperty("Java.security.policy","file:/C:/Users/kBPersonal/Documents/NetBeansProjects/JAASTest/JAASTest.policy");
その後
System.setSecurityManager(new SecurityManager());
これは理想的ではなく、決定的な解決策でもありませんが、.classファイルが存在する場所から「rmiregistry&」を実行すると、この問題が解決します。