Как настроить файл security.policy для конкретного приложения из NetBeans?

У меня возникли небольшие проблемы - на самом деле очень много - я пытаюсь выяснить, как заставить 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 ответа

Решение

Самый простой способ установить конкретную политику безопасности - через аргумент времени выполнения. Например, вот что мы делаем здесь для той же проблемы:

  1. Откройте "Свойства проекта -> Выполнить"
  2. Выберите конфигурацию во время выполнения
  3. Отредактируйте "Параметры VM" для конфигурации времени выполнения
  4. Добавьте следующее:

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

где ты src/dir1/dir2/important.policy будет изменен в вашем примере, чтобы указать на ваш файл JAASTest.policy,

Если вы используете System.setProperty() метод, чтобы добавить файл политики, а затем убедитесь, что перед созданием SecurityManager, Я использовал SecurityManager прежде чем с System.setProperty() метод, и вызов его, прежде чем я создаю SecurityManager вообще работает.

Добавьте политику безопасности перед настройкой системного менеджера безопасности.

согласно вашему заданному коду сначала добавьте

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

затем

System.setSecurityManager(new SecurityManager());

Хотя это не идеально и не является окончательным решением, решение этой проблемы решит запуск команды "rmiregistry &" из того места, где находятся ваши файлы.class.

Другие вопросы по тегам