我在网页中创建了一个applet,但每当我运行它时,我都会得到这样的结果:
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)我该如何解决这个问题?
发布于 2012-06-24 16:17:25
由于我对您的小应用程序略知一二,并且确信这些图像是应用程序的固有部分,因此我将对paulms4采取不同的策略。
忘了File实例吧。对于这一点,它们既不可行,也不必要。只有受信任的小程序才能访问File,但即便如此,小程序可以建立File的唯一位置也是指向用户PC上的文件系统位置的位置。显然,您的applet的图像不能通过这种方式获得(好吧-它们可能在浏览器缓存中,但对我们没有任何用处)。
通过URL访问小程序资源会更典型(也更容易)。URL可以相对于applet的代码库或文档库建立。如果图片真的在Jar里面,它们就会变成一个embedded resource --请看下面的信息。关于如何获取URL的页面。
加载“只读”资源的J2SE中的大多数方法都将接受File、URL或InputStream。我最常使用URL作为它的通用工具。URL可以表示web资源、本地文件系统上的文件或深埋在Jar文件中的资源(无论是web上的还是本地文件系统上的)。
发布于 2012-06-24 12:36:50
问:我该如何解决这个问题?
答:嗯--不要试图从applet读取客户端PC上的文件?
或阅读有关“策略文件”的内容:
Java小程序在一个安全的“沙箱”中运行。这是为了最终用户的安全而设计的:
https://stackoverflow.com/questions/11174961
复制相似问题