2014-12-31 2 views
0

JFrame에서 왼쪽 위 이미지를 설정하려고합니다. 그러나 그것은 내 PNG 파일이 존재하지 않는다고 주장합니다. 나는JVM에서 내 PNG가 존재하지 않는 이유는 무엇입니까?

mainFrame.setIconImage(new ImageIcon(getClass().getResource("C:/Users/Steve/Programming/Projects/Java/BibleReader/bibleReader/src/test/resources/assets/bible/textures/icon.png")).getImage()); 

이 오류

Exception in thread "main" java.lang.NullPointerException at 
javax.swing.ImageIcon.<init>(Unknown Source) at 
com.nickson.input.UI.prepareGUI(UI.java:42) at 
com.nickson.input.UI.<init>(UI.java:33) at 
com.nickson.main.Engine.main(Engine.java:19) 

가 왜 이런 일을하다와 아이콘을 설정?

답변

3

왜 이런 일이 발생합니까?

파일 시스템의 경로로 리소스를 열려고합니다. 자원 경로는 응용 프로그램 클래스 경로의 디렉토리 또는 JAR 파일에 상대적이어야합니다.

그래서 특정 경우에 클래스 로더는 현재 클래스의 리소스 위치에 상대적인 "C :"라는 리소스 폴더를 찾고 있습니다. 당연히 존재하지 않습니다. 그리고 getResource이 자원을 찾을 수 없으면 null을 반환하기 때문에 NPE로 연결됩니다.


추측으로

, 당신은 메이븐을 사용하는 가정은, 당신의 코드는 단위 테스트에서 실행중인 경우 경로 "/assets/bible/textures/icon.png"이 작동 것이라고 생각합니다. 프로덕션 코드의 경우 잘못된 트리에 리소스가 있다고 생각합니다. 그것은 .../main/resources/ 트리에 있어야합니다.

관련 문제