Как определить, доступна ли функция во время выполнения JNLP?
-
09-06-2019 - |
Вопрос
У меня есть приложение, которое действительно должно быть установлено, но оно отлично работает при развертывании с использованием JNLP.
Однако может показаться, что некоторые функции Java, такие как Runtime.exec
, не работают с использованием параметров безопасности по умолчанию.
Поэтому я бы хотел отключить функциональность пользовательского интерфейса, которая опирается на такие функции. Р>
Итак, мой вопрос: как определить во время выполнения, доступны ли определенные функции?
Тематическим примером, конечно же, является Runtime.exec
.
Решение
Вы хотите задать вопрос SecurityManager если у вас есть право Exec с методом checkExec.
Другие советы
Я также обнаружил, что добавляю в файл JNLP следующее:
<security>
<all-permissions/>
</security>
А подписание файла JAR позволяет приложению работать со всеми разрешениями, необходимыми для Runtime.exec
.
Для конкретного примера Runtime.exec в классе SecurityManager есть метод checkExec (String cmd), который будет вызывать исключение, которое может быть перехвачено для определения возможности выполнения необходимой команды. Для получения дополнительной информации см. Javadoc для Runtime.exec и SecurityManager.checkExec.
В более общем случае требуется создать объект Permission, представляющий проверяемую задачу, и запустить метод checkPermission SecurityManager. Р>