본문 바로가기

Trouble Shootings

JAVA 에러 java.lang.IllegalArgumentException: URI is not hierarchical

// resources 폴더에 있는 temp.txt 파일을 읽어온다.
File file = new File(new ClassPathResource("temp.txt").getURI());

 

java.lang.IllegalArgumentException: URI is not hierarchical
...

resources 폴더에 있는 파일을 읽어들이는 코드가 local에서는 잘 동작하는데, 개발계에서 자꾸 위와 같은 에러가 발생하였다. 구글링을 해보니 원인을 다음과 같았다.

 

1. local에서 코드를 실행시킬 때는 temp.txt 파일이 소스폴더에 독립적인 하나의 파일로 존재하기 때문에 정상적으로 실행된다.

2. 개발계에는 jar파일이 실행되기 때문에 temp.txt가 독립된 파일이 아니라 jar파일의 데이터 일부분으로서 하나의 온전한 파일로 가져올 수 있다.

 

따라서 아래 코드와 같이 temp.txt를 하나의 파일로 가져오는 것이 아니라 InputStream으로 파일 내용을 읽도록 코드를 변경하였다.

// File로 가져오는 것이 아니라 InputStream으로 내용을 읽어오도록 수정.
InputStream is = new ClassPathResource("temp.txt").getInputStream();
...

 

 

 

 

 

728x90