Как настроить файл 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 ответа
Самый простой способ установить конкретную политику безопасности - через аргумент времени выполнения. Например, вот что мы делаем здесь для той же проблемы:
- Откройте "Свойства проекта -> Выполнить"
- Выберите конфигурацию во время выполнения
- Отредактируйте "Параметры VM" для конфигурации времени выполнения
Добавьте следующее:
-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.