从地图上阅读图片

时间:2014-12-28 22:17:52

标签: java debugging

我正在尝试从地图中读取图片,该地图与java文件位于同一地图中。它会转换NullPointerException。请注意,Kort类正在运行。

try {

        bildmapp = new File("bildmapp");
        bilder = bildmapp.listFiles();
        allCards = new Kort[bilder.length];

        for (int i = 0; i < bilder.length; i++) {

            allCards[i] = new Kort(new ImageIcon(bilder[i].getPath()), Kort.Status.DOLT);
        }
    } catch (ArrayIndexOutOfBoundsException e) {

        JOptionPane.showMessageDialog(gameFrame, "Error cause: " + e.getCause() + "\nArrayIndexOutOfBoundsException!"
                , "accessPicture Error!",
                JOptionPane.ERROR_MESSAGE);
        System.exit(0);
    } catch (NullPointerException e) {

        JOptionPane.showMessageDialog(gameFrame, "Error cause: " + e.getCause() + "\nNullPointerException!"
                , "accessPicture Error!",
                JOptionPane.ERROR_MESSAGE);
        System.exit(0);
    }

2 个答案:

答案 0 :(得分:0)

如果您说课程Kort工作正常,那么我的猜测就是您的问题将与您的路径一致,listFiles正在返回null。尝试在null上访问属性length,导致空指针异常

来自java doc

  

public File[] listFiles()

     

返回:表示文件和的抽象路径名数组   此抽象路径名表示的目录中的目录。该   如果目录为空,则数组将为空。如果是这样返回null   abstract pathname不表示目录,或者表示I / O错误   发生。

答案 1 :(得分:0)

来自File#listFiles() documentation

  

如果此抽象路径名不表示目录,则此方法返回null。

根据您的评论

  

bildmapp.exist()和 bildmapp.isDirectory()的结果为False和false

似乎这是上述文档中提到的情况,这意味着

bildmapp = new File("bildmapp");
bilder = bildmapp.listFiles();

会将bilder初始化为null。因为那个

allCards = new Kort[bilder.length];

将抛出NullPointerException,因为bilder.length会尝试在length上获取null

因此,要解决此问题,您需要在

中更正目录的路径

bildmapp = new File("bildmapp");

(我无法帮助你,因为我不知道你的目录在哪里或应该位于哪里。也许打印bildmapp当前正在描述的位置可以帮助你确定应该将哪个参数放入{{ 1}}所以尝试打印bildmapp = new File(...);)的结果。