상황
-
개발 환경에서는 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}