2013-07-04 53 views
-3

嗨我得到了一個惱人的錯誤不斷它給我輸入== null錯誤,你會得到一個圖像不能加載。這是代碼。輸入== null java錯誤

package Graphics; 

import java.awt.image.BufferedImage; 
import java.io.IOException; 

import javax.imageio.ImageIO; 

public class spritesheet { 
    public String path; 
    public int width; 
    public int height; 
    public int[] pixels; 


     public spritesheet(String path){ 
      BufferedImage image = null; 

      try { 
       image = 
         ImageIO.read(spritesheet.class.getResourceAsStream(path)); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      if(image == null){ 
       return; 
      } 
      this.path = path; 
      this.width = image.getWidth(); 
      this.height = image.getHeight(); 

      pixels = image.getRGB(0, 0, width, height, null ,0 , width); 
     }   
     public int[][] getsprite(int x, int y, int[][] pixels){ 
      int i = 0; 
      for(int xx = 0;xx< 7;x++){ 
       for(int yy = 0; yy< 7;yy++){ 
        pixels[xx][yy] = this.pixels[i]; 
        i++; 
       } 
      } 
      return pixels; 
     } 
    } 

我檢查過了,目錄是完全正確的。

錯誤

Exception in thread "main" java.lang.IllegalArgumentException: input == null! 
    at javax.imageio.ImageIO.read(Unknown Source) 
    at Graphics.spritesheet.<init>(spritesheet.java:20) 
    at Tile.Tile.<init>(Tile.java:9) 
    at Tiles.Wall.<init>(Wall.java:8) 
    at Tiles.tiles.<init>(tiles.java:6) 
    at Core.core.<init>(core.java:27) 
    at Core.core.main(core.java:140) 
+3

有什麼確切的錯誤信息?這個代碼是如何被調用的?什麼是「路徑」? – user2357112

+0

路徑是它用來查找區域的字符串,所以如果我製作一個新的精靈表並將路徑設置爲C://testfile.png,那麼它將嘗試從那裏獲取它。這是給出錯誤的確切部分。 – user2551633

+0

你是怎麼調用'spritesheet'構造函數的? – Mac

回答

1

使用FileImageInputStream閱讀您的文件

ImageIO.read(new FileImageInputStream(new File(path))); 

因爲,你使用絕對路徑(C:\ test.png)不使用getresourceAsStream()所使用從您的類路徑加載資源。其次,你不需要在你的路徑上逃避一個正斜槓。使用C:/testfile.pngC:\\testfile.png

參考:
ImageIO#read(javax.imageio.stream.ImageInputStream)

+0

我試過,但現在我得到這個錯誤在線程 – user2551633

+0

異常「主」顯示java.lang.NullPointerException \t在Graphics.spritesheet.getsprite(spritesheet.java:39) \t在Tiles.Wall。 (Wall.java:9) \t at Tiles.tiles。 (tiles.java:6) \t at Core.core。 (core.java:27) \t at Core.core.main(core.java:140) 它只是跳過圖像== null;當它試圖在代碼的底部搜索文件時,它不起作用 – user2551633

+1

@ user2551633使用ImageIO.read(new FileImageInputStream(new File(path))); –