Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

잡동사니를 모아두는 서랍장

jar 파일 실행 시 내부 리소스를 못읽는다면 확인해볼 사항 본문

Java

jar 파일 실행 시 내부 리소스를 못읽는다면 확인해볼 사항

kingkk31 2021. 4. 16. 17:09

reasource 내의 파일 내용을 참조해야하는 로직이 있었다. 늘 그렇듯 자연스럽게 File 을 사용했다.

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());

File myFile = new File(getClass().getClassLoader().getResource("test.yaml").toURI()); //error
MyTemplate myTemplate = mapper.readValue(myFile, MyTemplate.class);

로컬에서 ide로 실행시켰더니 멀쩡히 동작. 그래서 다 됐다~하며 도커에 올리려니...

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

아래와 같은 메세지와 함께 실행되지 않는 것이다!

멘붕...왜지??

 

찾아보니까 내가 몰랐던 한가지, jar 내부에서 리소스를 file 로 읽으려고 들면 안된다...

 

그래서 getResourceAsStream 으로 변경하여 InputStream 으로 받았다. getResourceAsStream 은 jar 로 패키징되도 내부 파일을 직접 읽을 수 있다!

InputStream inputStream = getClass().getClassLoader().getResourceAsStream("test.yaml");
MyTemplate myTemplate = mapper.readValue(inputStream, MyTemplate.class);

 

참고)

 

stackoverflow.com/questions/10144210/java-jar-file-use-resource-errors-uri-is-not-hierarchical

'Java' 카테고리의 다른 글

Java Reflection 으로 인스턴스 생성하는 예시  (0) 2020.12.03
객체지향 5원칙(SOLID)  (0) 2020.12.02
jar, war, ear 차이  (0) 2020.02.01
Comments