Как определить, работает ли моя программа как апплет или как приложение Java - PullRequest
5 голосов
/ 07 июня 2011

Я написал небольшой неуклюжий клон для обсуждения и пишу на диск для сохранения игр и рекордов.

Есть ли простой способ проверить, работает ли моя программа как апплет,или как приложение?

например ...

if(!anApplet){
//Include disk i/o features
}

Я пытался установить логическую переменную в классе 'main', установить ее в false с помощью init () и true в методе main, нопока не повезло.Будем стараться независимо, но заранее спасибо за любой совет!

1 Ответ

3 голосов
/ 07 июня 2011

Используйте AccessController . Вы можете обернуть все вызовы в блок AccessController.doPrivileged.

AccessController.doPrivileged(new PrivilegedAction() {
        public Object run() {
            // privileged code goes here, for example, read and writing files.
            ...
            return null; // nothing to return
        }
});

Вы также можете, при необходимости, установить разрешения, которыми обладает ваше приложение, при запуске и использовать их позже:

Boolean flag = AccessController.doPrivileged(new PrivilegedAction() {
        public Boolean run() {
            boolean flag = false;
            // privileged code goes here, for example, read and writing files. If it succeeds, set flag to true.
            ...
            return flag; // return true, if the privileged action succeeded
        }
});

Я бы рекомендовал использовать первый подход. Если вы используете второе, то сделайте переменную flag final по своей природе; поэтому вам необходимо выполнить любое «тестирование привилегий» в конструкторе класса, в котором хранится этот флаг.

Добавление

Фрагменты кода будут продолжать выдавать AccessControlException с, если они встречаются. Если вы хотите продолжить обработку, не мешая пользователю, вам придется его ловить, устанавливая флаг в false. Блок AccessController.doPrivilege существует для проверки наличия разрешения для текущего фрейма стека.

Приложение № 2

Использование AccessController.checkPermission не рекомендуется, если только вы не можете гарантировать наличие диспетчера безопасности и соответствующего файла политики. В отсутствие диспетчера безопасности этот метод всегда генерирует исключение для проверки прав доступа, что нежелательно, если приложение не работает в качестве апплета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...