bong-u/til

Issue - Jar 실행환경에서 ClassPathResource를 가져오지 못하는 문제

수정일 : 2024-11-15

상황

  • 개발 환경에서는 ClassPathResource를 문제없이 불러온다

  • jar로 package해서 실행했을 때 오류가 발생한다

    Caused by: java.lang.RuntimeException: Cannot read blacklist file
            at org.academy.springorder.blacklist.BlacklistRepository.list(BlacklistRepository.java:25)
            at org.academy.springorder.blacklist.BlacklistService.list(BlacklistService.java:16)
            at org.academy.springorder.CommandLineApplication.main(CommandLineApplication.java:66)
            ... 8 more
    
  • 문제의 코드

    1    List<String> list = new ArrayList<String>();
    2
    3    try {
    4        list = Files.readAllLines(blacklist.getFile().toPath());
    5    }
    6    catch (IOException e) {
    7        throw new RuntimeException("Cannot read blacklist file");
    8    }
    

해결

  • readAllLines를 사용하지 않고 InputStreamReader와 BufferedRearder를 사용하여 해결하였다.

     1List<String> list = new ArrayList<String>();
     2
     3try {
     4    InputStreamReader isr = new InputStreamReader(blacklist.getInputStream());
     5    BufferedReader br = new BufferedReader(isr);
     6
     7    String line;
     8    while ((line = br.readLine()) != null)
     9        list.add(line);
    10    isr.close();
    11    br.close();
    12}