2012-06-24 104 views
0

我创建了一个网页内的小程序,但每当我运行它,我得到这个:的AccessControlException中的Java 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) 

我该如何解决这个问题?

回答

3

因为我知道一些关于你的小程序,并深信这些图像是应用程序的固有部分,我将采取不同的粘性4。

忘记File实例。他们既不可行,也不必要。只有受信任的applet才能访问File,但即使如此,applet可以建立File的唯一位置就是指向用户PC的文件系统上的位置。很明显,applet的图像不可用(确定 - 它们可能位于浏览器缓存中,但对我们来说这没用)。

通过URL访问小程序资源将更为典型(&)。可以建立相对于小应用程序的代码库或文档库的URL。如果图像实际上在Jar内部,则它们将成为embedded resource - 请参阅信息。页面,了解如何获取URL。

J2SE中加载“只读”资源的大多数方法将接受File,URLInputStream。我最常用URL来使用它的通用实用程序。 URL可以表示Web资源,本地文件系统上的文件或深埋在Jar文件(无论是Web还是本地文件系统)中的资源。

+0

很好的答案!你绝对正确。 – paulsm4

+0

@ paulsm4在开发applet或JWS应用程序时,需要使用“File”是一种常见的错误。它也出现在其他类型的应用程序中,但不太经常。 –

相关问题