2016-07-10 4 views
0

jar 파일 내부에서 이미지를로드하고 싶습니다.jar 루트에서 이미지가로드되지 않습니다.

많은 페이지가 내가 사용중인 정확한 코드를 사용한다고 말합니다. 어떤 사람들은 getClass()을 사용한다고하지만, 내 메인 메소드에서 코드를 실행하고 있으며 클래스는 정적이 아닙니다.

현재 주 클래스의 main 메서드에 다음 코드가 있습니다.

try { 
    ImageIcon icon = new ImageIcon(BlockWorld.class.getResource("icon.png")); // line 46 
    window.setIconImage(icon.getImage()); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

나는 icon.png이 항아리의 루트에 있다는 사실을 알고있다. 알파가없는 128 x 128 픽셀입니다.

모든 것이 잘 컴파일됩니다. 항아리를 실행할 때, 그것은 다음을 내 보냅니다.

java.lang.NullPointerException 
at javax.swing.ImageIcon.<init>(Unknown Source) 
at com.Tgwizman.BlockWorld.BlockWorld.main(BlockWorld.java:46) 

누구에게 의견이 있습니까?

답변

0

경로에 선 슬래시를 추가하여 항아리의 루트 폴더를 사용하십시오.

getResource("/icon.png")

+0

은 또한,'getResource' 호출은 클래스 로더에 안? 'BlockWorld.class.getClassLoader(). getResource ("/ icon.png")와 마찬가지로. – coladict

+0

이 경우에는 해당되지 않습니다. 이제 코드가 작동합니다. 나는 왜 자바가 기본 디렉토리로 항아리 루트를 가지고 있는지 모르겠다. 이 사실을 알기 위해 영원히 노력했습니다. 마침내 여기에 질문을 올리면 http://stackoverflow.com/questions/2593154/get-a-resource-using-getresource에서 다른 질문에 대한 답변의 일부로이 질문의 대답을 발견했습니다. – Tgwizman

+1

이런 종류의 작업을 처리 할 때는 리소스에 올바른 경로를 제공해야합니다. 또한 위에서 설명한 것처럼 클래스 로더를 호출 할 필요가 없습니다. – Aris

관련 문제