[Java] getResourceAsStream return null

윤찬호·2023년 1월 16일
0

에러

목록 보기
1/6

현상

  • Java에서 getResourceAsStream 함수를 사용하여 resource파일을 읽는데, 파일의 경로는 정상적으로 넘어가나 계속해서 null이 리턴된다.

  • 함수의 매개변수로 넘어가는 경로(ex, com/abc/123.dat)를 보면 파일이 존재하지만 getResourceAsStream 함수에서는 해당 파일을 찾지 못한다.

해결

자바 런타임에서 중요한 것은 소스의 위치가 아니라 클래스 파일의 경로이다!

내가 "123.dat" 파일이 있는지 확인해본 경로는 class파일쪽 경로가 아니라 소스파일 쪽 경로였다.
실제로 프로젝트가 빌드되고 실행되는 class파일 경로를 살펴보니 "123.dat" 파일이 없었다.

해당 프로젝트를 클린&빌드 하였더니 class파일 경로에 "123.dat" 파일이 생성되었고 getResourceAsStream 함수에서 정상적으로 리소스 파일을 읽어들였다.


다시 생각해보면 정말 간단하고 당연한 일이지만, 에러가 발생했을 당시에는 전혀 생각하지 못했다. 코드에서만 문제점을 찾으려고 디버깅에 많은 시간을 투자했는데, 결국 답은 코드 밖에 있었다. 😄

PS
리소스 파일을 추가하고 이클립스로 빌드를 했는데 추가한 파일이 빌드 경로에 없는 경우가 있다. 이런 때는 이클립스 프로젝트를 새로고침 하고 다시 해보자. 파일탐색기로 파일을 추가하고 이클립스에서 새로고침을 하지 않으면, 추가된 내용이 적용되지 않는다.

0개의 댓글