小程序 - 如何走出沙盒? (JAVA)

时间:2014-02-10 00:43:29

标签: java applet

我制作了一个小程序但是我发现它是在一个紧凑的“沙箱” 我并不完全理解这一点,但我明白的是我必须摆脱它编写代码。

但是我不知道怎么做。

我在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();
    }

1 个答案:

答案 0 :(得分:2)

我建议您考虑将图像打包在Jar文件中,然后将其作为资源访问,而不是在上游挣扎。做到这一点,没有必要“走出沙箱”。正如keshlam在下面指出的那样,沙箱是有充分理由的 - 为了计算机的安全性,以便applet无法访问他们不应该访问的东西。