如何处理 java.security.AccessControlException

发布于 2024-12-11 08:02:07 字数 1802 浏览 3 评论 0原文

我正在尝试在本地启动我的小程序,这是我得到的异常:
我不知道为什么会发生这种情况,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)

I'm trying to launch my applet locally and this is the exception I get:
I don't know why this is happening the mp3 is already located on the jar file, why can't I access it?

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好久不见√ 2024-12-18 08:02:07

不允许小程序(或至少不受信任的小程序)访问本地文件系统。这是一件好事,因为如果随机网站有这样的访问权限,大多数人可能会感到不安。

如果你想访问一个文件,请通过javax.jnlp(只需谷歌一下),它将提供一个API,为用户提供一个文件选择器,以允许小程序读取他们选择的特定文件。

如果它只是小程序一部分的文件,请使用资源 (Class.getResourceAsStream) 或通过 http 连接 (URL)

Applets (or at least untrusted applets) are not allowed to access the local file system. This is kind of a good thing as most people might get upset if random websites had such access.

If you want to access a file go through javax.jnlp (just google it) and it'll provide an API that presents the user with a file chooser to allow applets to read a specific file of their choosing.

If it's just a file that is part of the applet, use either a resource (Class.getResourceAsStream) or through an http connection (URL)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文