2013-07-04 3 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

Path는 영역을 찾기 위해 그것을 사용하는 문자열입니다. 그래서 새로운 스프라이트 시트를 만들고 경로를 C : //testfile.png로 설정하면 거기에서 그것을 얻으려고 시도합니다. 그것이 오류를 제공하는 정확한 부분입니다. – user2551633

+0

어떻게'spritesheet' 생성자를 호출할까요? – Mac

답변

1

사용 FileImageInputStream 파일을 읽을 수

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

당신은 절대 경로 를 사용하기 때문에 (C : \ test.png)이 사용됩니다 getresourceAsStream()를 사용하지 않는 클래스 경로에서 리소스를로드하십시오. 둘째, 경로에서 슬래시를 벗어날 필요가 없습니다. C:/testfile.png 또는 C:\\testfile.png을 사용하십시오.

참조 :
ImageIO#read(javax.imageio.stream.ImageInputStream)

+0

는 그 시도하지만 Tiles.Wall에서 Graphics.spritesheet.getsprite (spritesheet.java:39) \t에서 현재 스레드에서 – user2551633

+0

예외 "주"java.lang.NullPointerException이 \t을이 오류가 발생합니다. (Wall.java:9) \t (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))); –