我在网页中创建了一个小程序,但每当我运行它时,我都会得到这个:
Exception in thread "Thread-13" java.security.AccessControlException: access denied ("java.io.FilePermission" "defensebg.png" "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.File.canRead(Unknown Source)
at javax.imageio.ImageIO.read(Unknown Source)
at Defense.run(Defense.java:63)
at java.lang.Thread.run(Unknown Source)
我该如何解决这个问题?
答案 0 :(得分:3)
由于我对您的applet了解不多,并且我确信这些图像是应用程序的固有部分,因此我将对paulms4采取不同的策略。
忘记File
个实例。它们既不适用于此,也不是必需的。只有受信任的applet才能访问File
,但即便如此,applet可以建立File
的唯一位置是指向用户PC的文件系统上的位置。显然,applet的图像不可用(好的 - 它们可能在浏览器缓存中,但这对我们没用)。
通过URL
访问applet资源会更为典型(也更容易)。可以相对于applet的代码库或文档库建立URL。如果图像实际上在Jar中,它们将成为embedded resource - 请参阅信息。关于如何获取网址的页面。
J2SE中加载“只读”资源的大多数方法都将接受File
,URL
或InputStream
。我最常使用URL作为它的泛型实用程序。 URL可以表示Web资源,本地文件系统上的文件或深埋在Jar文件内的资源(无论是在Web上还是在本地文件系统上)。
答案 1 :(得分:2)
问:我该如何解决这个问题?
答:呃 - 不要尝试从小程序中读取客户端PC上的文件吗?
或阅读"政策文件":
Java applet在安全的沙盒中运行"。这是设计 - 为了最终用户的安全: