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