web-dev-qa-db-ja.com

NetBeans内から特定のアプリケーションのsecurity.policyファイルを設定するにはどうすればよいですか?

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)
_

すべての助けは大歓迎です!

9
Mike

特定のセキュリティポリシーを設定する最も簡単な方法は、ランタイム引数を使用することです。たとえば、これは同じ問題に対してここで行うことです。

  1. 「プロジェクトのプロパティ->実行」を開きます
  2. ランタイム構成を選択します
  3. ランタイム構成の「VMオプション」を編集します
  4. 以下を追加します。

    -Djava.security.manager -Djava.security.policy=src/dir1/dir2/important.policy

ここでsrc/dir1/dir2/important.policyは、ファイルを指すように例で変更されますJAASTest.policy

16
Bob Cross

System.setProperty()メソッドを使用してポリシーファイルを追加している場合は、SecurityManagerを作成する前にそれが行われていることを確認してください。以前はSystem.setProperty()メソッドでSecurityManagerを使用しましたが、SecurityManagerを作成する前に呼び出すと通常は機能します。

18
Euphobia

システムセキュリティマネージャを設定する前に、セキュリティポリシーを追加してください。

あなたの与えられたコードに従って最初に追加します

System.setProperty("Java.security.policy","file:/C:/Users/kBPersonal/Documents/NetBeansProjects/JAASTest/JAASTest.policy");

その後

System.setSecurityManager(new SecurityManager());
5

これは理想的ではなく、決定的な解決策でもありませんが、.classファイルが存在する場所から「rmiregistry&」を実行すると、この問題が解決します。

0
iammyr