簡體   English   中英

ImageIO.read(fileinputstream/imageinputstream/bufferedinputstream) 導致整個 class 顯示 null 指針錯誤 (java)

[英]ImageIO.read(fileinputstream/imageinputstream/bufferedinputstream) causing entire class to show null pointer error (java)

所以我試圖將一些圖像上傳到 class 中的緩沖圖像數組,但是當我運行代碼時,我有代碼的 class 返回一個 npe。 該圖像是一個 png 文件。 這是代碼:

...

private BufferedImage[] img = new BufferedImage[2];

public Backdrop(String args[]) {
    for (int i = 1; i <= 2; i++) {
        String path = "resources/Map1"+i+".png";
        File file = new File(path);

        if (file.length() <= 0 || !file.isFile() || !file.exists()) {
            System.out.println("Image " + i + " failed first test");
        }

        try {
            FileInputStream fis = new FileInputStream(file);
            img[i-1] = ImageIO.read(fis);
        } catch (IOException e) {
            e.printStackTrace();
        }

        if (img[i-1] == null) {
            System.out.println("Failed to upload Map1" + i + ".png to array");
        }
    }
}

public void render(Graphics g){
    switch(currentBackdrop) {
        case Map11:
            /*//upload map image
            g.drawImage(img, 0, 0, null);*/
            break;
        case Menu:
            g.setColor(Color.black);
            g.fillRect(0, 0, WIDTH, HEIGHT);
            break;
        default:
            break;
    }
}

正如標題所說,我已經嘗試過使用文件輸入流、圖像輸入流、緩沖輸入流。 我也嘗試過使用新文件(...)。 同樣的事情也會發生。 我認為這是 img[i-1] = ImageIO.read(fis); 因為當我將其注釋掉時,一切正常(顯然圖像不顯示,因為我已將 g.drawImage 代碼注釋掉並且數組為空)。 在談論 for 循環中只有一小部分的事實之前,我稍后會增加它,我只是想讓它首先工作。 我很確定路徑位於正確的位置,因為如果我將路徑更改為 fdilsjah.png 之類的路徑,錯誤將是 filenotfoundexception。 此外,第一個 println 代碼沒有運行,所以我認為這也表明文件存在。

這是錯誤消息:

Exception in thread "Thread-0" java.lang.NullPointerException
    at com.CASGame.InsomniacCheese.Game.render(Game.java:137)
    at com.CASGame.InsomniacCheese.Game.run(Game.java:85)

所以 Game.java:137 只是 background.render(g) (這只是 Backdrop 類的私有實例)

如果您在 Game.java:137 有 background.render backdrop.render(g) ,則上述堆棧跟蹤表明backdropnull

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM