본문 바로가기

IT

jar 파일 내의 이미지 파일 로딩 실패에 관하여...

반응형

 eclipse에서 실행할 때는 참 로딩이 잘되던 것이 jar 파이로 배포하고 실행하려고 하면 이미지 위치를 못 찾는다? 웹을 검색해보신 분들은 잘 아시겠지만... 10여개의 글을 읽었는데 답답하더군요.. 되는게 하나도 없으니..


 자.. 하나만 기억하면 됩니다. '사용자가 생성한 폴더는 자동으로 리소스로 잡히지 않는다. 이걸 리소스라고 꼭 설명해줘야 한다.' 입니다.


 다음 이미지를 보십시다.




주황색으로 표시된 부분을 살펴보면 우선 왼쪽은 img 폴더 밑에 logo.png 라는 이미지가 보입니다.

오른쪽에서는 이미지를 로딩하는데 폴더명을 제외하고 파일명만 써놨네요?? 하지만 정상적으로 이미지를 로딩하고 프로그램이 실행됩니다.


 왜 그럴까요? 답은 Properties에 있습니다. 프로젝트에서 마우스 오른쪽 클릭으로 Properties 창으로 이동합니다.




 왼쪽 트리에서 Java Build Path 를 선택하고, 우측에서는 Source 탭에서 Add Folder... 버튼을 눌러서 img 폴더를 선택하고 확인을 누르면 위와 같이 소스 폴더에 img 폴더가 추가가 됩니다. 


 이게 무슨 효과가 있는 것이냐하면 eclipse는 기본적으로 소스(.java) 파일과 컴파일(?)된 .class 파일의 위치가 서로 다릅니다. 소스는 src 폴더에 들어있고, class 파일은 bin 폴더에 생성되게 되죠. 문제는 소스는 bin폴더로 컴파일되어 들어가는데 우리 이미지 파일은 덩그러니 img 폴더 내부에 있을 뿐이죠. 이걸 컴파일 타임에 bin 폴더에 들어가게 해주는 역할을 하도록 설정한 것입니다.


 자 아래 이미지를 하나 더 보도록합니다. eclipse의 View 중에서 navigator라는 View가 존재합니다. 이것으로 보면 일반적으로 사용하는 Project Explorer에서는 안보이는 폴더가 보입니다. (프로젝트의 구조가 모두 보이는 형태죠)




 아까는 bin 폴더밑에 logo.png 파일이 없었는데 이제 컴파일타임에 img 폴더의 이미지를 bin 폴더로 자동으로 옮겨놓습니다. 이제 export를 사용하여 jar 파일을 생성하면, 정상적으로 이미지가 로딩되는 것을 확인할 수 있습니다.


끝.

반응형