Страницы

Поиск по вопросам

суббота, 1 июня 2019 г.

Можно ли обращаться (чтение/запись) к файлам из апплета?

Разбираюсь с апплетами. Написал апплет, который должен сохранять своё состояние. Делаю это с помощью класса Properties. Файл свойств находиться по адресу C:\Users\UserName\.ShapeAppletData\.properties Когда тестирую апплет в IDE (Eclipse) всё работает. Когда запускаю в браузере (Mozilla) появляется исключение InvocationTargetException. Вывел сообщение об ошибке, оно такое:
acess denied ("java.util.PropertyPermission" "user.home" "read")
Почему возникает такая ошибка? Может ли апплет обращаться к файлам на компьютере? Как управлять разрешением на чтение/запись апплетом?
UPD : Локализовал ошибку. Ошибка возникает на этой строчке кода:
userDir = System.getProperty("user.home");


Ответ

Sun в свое время постарались сделать технологию апплетов безопасной для конечного пользователя. Обычные Java-апплеты запускаются в песочнице с ограниченными возможностями. Вы можете подписать апплет сертификатом от доверенного издателя и, если пользователь примет сертификат и подтвердит запрос полномочий, запустить его вне песочницы.
В песочнице вам доступны
сетевые подключения на тот же хост и порт, откуда был получен апплет (у апплетов, загруженных с локальной файловой системы, ограничений нет); загрузка HTML-документов вызов публичных методов апплетов-соседей по странице; чтение системных свойств:
java.class.version java.vendor java.vendor.url java.version os.name os.arch os.version file.separator path.separator line.separator
и некоторых других при старте через JNLP.
В песочнице в общем случае вы НЕ можете
обращаться к файловой системе (доступно через JNLP); запускать процессы; использовать буфер обмена (доступно через JNLP); отправлять задания на принтеры (доступно через JNLP); загружать нативные библиотеки (JNI); подменять SecurityManager; создавать альтернативные загрузчики классов; читать некоторые системные свойства:
java.class.path java.home user.dir user.home user.name

Комментариев нет:

Отправить комментарий