我正在尝试从地图中读取图片,该地图与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);
}
答案 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(...);
)的结果。