Java-апплет с исключением AccessControlException

У меня есть Java-апплет, который я пытаюсь запустить в HTML-файле с помощью тега HTML-апплета <applet>, но он выдает следующее исключение:

Caused by: java.security.AccessControlException: access denied 
    (java.io.FilePermission darkorange.png read)

На сайте Oracle объясняется предоставление доступа к апплетам с использованием такой политики:

appletviewer -J-Djava.security.policy=applet 

http://docs.oracle.com/javase/tutorial/security/tour1/examples/WriteFile.html

Но это только в DOS, как мне заставить мой браузер распознавать файл безопасности?


person user930412    schedule 25.12.2011    source источник
comment
Что такое darkorange.png? Это изображение, используемое приложением. сам?   -  person Andrew Thompson    schedule 26.12.2011
comment
да, это изображение, используемое программой. апплет отлично работает в eclipse, но в браузере он дает это исключение, я знаю, что это можно сделать, поскольку amazon s3 использует java-апплет для загрузки файлов с клиентской машины на сервер, просто можно выяснить, как   -  person user930412    schedule 26.12.2011


Ответы (1)


Апплеты не могут читать / записывать файлы с локального компьютера и / или подключаться / читать / писать из / в домен, отличный от того, из которого они были загружены. Они ограничены средой, похожей на песочницу, и им требуется разрешение на доступ к системным ресурсам за пределами их ограниченной среды. Апплеты могут читать только внутри своего локального каталога. Все остальные операции доступа требуют разрешения. Я бы посоветовал пересмотреть ваше требование чтения файла с клиентской машины, поскольку это, по-видимому, не является допустимым требованием.

Кстати, если вам все равно нужно это сделать, тогда ваши jar-файлы апплета должны быть подписано, и соответствующие разрешения должны быть предоставлены вашему апплету в пользовательском файле java.policy на клиентском компьютере. Обратитесь к документации java для определения политики.

person Drona    schedule 25.12.2011
comment
Привет, наконец, через три дня я решил это, проблема состоит из двух частей. один - это двухзначный код, который обращается к файлам на клиентских машинах внутри допривилегированного метода, второй - для подписи jar raditha.com/java/sandbox/unsigned.php Эта страница помогла - person user930412; 28.12.2011