Как обрабатывать исключение java.security.AccessControlException - PullRequest
1 голос
/ 21 октября 2011

Я пытаюсь запустить мой апплет локально, и это исключение, которое я получаю:
Я не знаю, почему это происходит, mp3 уже находится в файле jar, почему я не могу получить к нему доступ?

SEVERE: null
java.security.AccessControlException: access denied (java.io.FilePermission file:\C:\applet\CairoNightTrainClient.jar!\Music\train.mp3 read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkRead(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at com.sun.media.codec.audio.mp3.JS_MP3FileReader.getAudioInputStream(JS_MP3FileReader.java:113)
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
    at LogicEngine.DJ.createClip(DJ.java:56)
    at LogicEngine.DJ.<init>(DJ.java:42)
    at GUI.JPanelGameApplet$1.run(JPanelGameApplet.java:65)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

1 Ответ

1 голос
/ 21 октября 2011

Апплетам (или, по крайней мере, недоверенным апплетам) не разрешен доступ к локальной файловой системе.Это хорошая вещь, так как большинство людей могут расстроиться, если у таких сайтов случайный доступ.

Если вы хотите получить доступ к файлу, перейдите через javax.jnlp (просто Google) и он предоставит APIкоторый предоставляет пользователю средство выбора файлов, позволяющее апплетам читать определенный файл по своему выбору.

Если это просто файл, являющийся частью апплета, используйте любой ресурс ( Class.getResourceAsStream ) или через соединение http ( URL )

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