10

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 ファイルを読み取っていないことを知らせる次のエラーが表示され続けます (ファイルの場所をメインの security.policy ファイルに追加しましたC:\Program Files (x86)\Java\jre6\lib\security\java.security)。ちなみに、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)

どんな助けでも大歓迎です!

4

4 に答える 4

18

メソッドを使用しSystem.setProperty()てポリシー ファイルを追加する場合は、SecurityManager. SecurityManagerメソッドで以前に使用System.setProperty()したことがあり、作成する前に呼び出すと、SecurityManager一般的に機能します。

于 2012-03-21T16:13:08.247 に答える
16

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

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

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

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

于 2011-05-19T16:37:44.243 に答える
5

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

指定されたコードに従って、最初に追加します

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

それから

System.setSecurityManager(new SecurityManager());
于 2015-06-30T06:37:51.207 に答える
0

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

于 2015-11-16T17:36:33.953 に答える