我制作了一个小程序但是我发现它是在一个紧凑的“沙箱” 我并不完全理解这一点,但我明白的是我必须摆脱它编写代码。
但是我不知道怎么做。
我在Java控制台中得到了这个:
Exception in thread "Thread-15" java.security.AccessControlException: access denied ("java.io.FilePermission" "Map_F.png" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at sun.plugin2.applet.AWTAppletSecurityManager.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 code.Loop.run(Loop.java:32)
at java.lang.Thread.run(Unknown Source)
我的代码在Github: https://github.com/KultidGames/Brandish/tree/master/Game_01/src/code
这也可能有所帮助:
public void run() {
x = 100;
y = 100; //1:50 if Background wanted http://www.youtube.com/watch?v=dabnz7NSiUc
try {
fore = ImageIO.read(new File("Map_F.png"));
map = ImageIO.read(new File("Map.png"));
rle = ImageIO.read(new File("MainCharRightRun.png")); //c
rri= ImageIO.read(new File("MainCharLeftRun.png"));//-
wup= ImageIO.read(new File("MainChar.png"));//c
wdo= ImageIO.read(new File("MainCharRunBack.png"));//-
wright=ImageIO.read(new File("MainCharLeft.png"));//c
wleft=ImageIO.read(new File("MainCharRight.png"));//-
back=ImageIO.read(new File("MainCharStill.png"));//c
still=ImageIO.read(new File("MainCharBack.png"));//-
rs= ImageIO.read(new File("MainCharLeftStill.png"));//c
ls= ImageIO.read(new File("MainCharRightStill.png"));//-
} catch (IOException e1) {
e1.printStackTrace();
}
答案 0 :(得分:2)
我建议您考虑将图像打包在Jar文件中,然后将其作为资源访问,而不是在上游挣扎。做到这一点,没有必要“走出沙箱”。正如keshlam在下面指出的那样,沙箱是有充分理由的 - 为了计算机的安全性,以便applet无法访问他们不应该访问的东西。