2013-01-11 2 views
0

현재 작업중인 작은 게임에 대한 스프라이트 시트를로드하려고합니다.ImageIO.read 표현식이 갑작스럽게 작동을 멈추었습니다.

private void load(){ 
    try { 
     BufferedImage image = ImageIO.read(Sprite.class.getResource(path)); 
     int w = image.getWidth(); 
     int h = image.getHeight(); 
     image.getRGB(0, 0, w, h, pixels, 0, w); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

ImageIO.read() 항상 null를 반환 문제는 여기에 코드의 조각이다. 또한 예외는 발생하지 않습니다. 이미지가 null 일 때 image.getWidth()으로 전화하면 분명히 다음 줄에서 오류가 발생합니다.

내게 정말 괴로운 점은 10 분 전에 동일한 코드 조각이 완벽하게 작동한다는 것입니다. 나는 독서 과정에 전혀 영향을 미치지 않는 가치를 변화시키지 않았다. 심지어 그것을 다시 바꾸는 것은 아무 것도하지 않을 것입니다.

여기서는 무엇을 해야할지 알고 있습니까?

+0

이미지를 디코딩 할 수없는 경우 null 반환 값은 일반 반환 값이므로 항상 'ImageIO.read'의 반환 값을 확인해야합니다. http://docs.oracle.com/javase/6/docs/ api/javax/imageio/ImageIO.html # read (java.net.URL). – Michael

답변

0

나는 당신의 문제가 여기에 있다고 생각 :

Sprite.class.getResource(path) 

당신은 밖으로이 줄을 작성하고 그 권리 나 아닌 경로를 확인할 수 있습니다. 이 문제는 파일 경로가 참일 때 발생합니다. 다음 코드 줄을 사용하여 파일 경로를 확인하십시오.

System.out.println(Sprite.class.getResource(path)); 

그러면 문제를 찾을 수 있습니다.

+0

그래, 그게 도움이 되었어. 문제가 아니 었어. 경로는 실제로 정확하지만 이미지 파일이 손상되었음을 알게 된 다음 힌트를 통해 - 어떻게되었는지는 모르지만 해결했습니다. :) – user1899069

관련 문제