IOExceptionclass path resource [mail.html] cannot be resolved to absolute file path because it does not reside in the file system: jar:file: ~~ /mail.html
jar:file:경로~ 로 실행하게 되어 Exception이 발생
Local 환경에서는 파일 처리를 하는데 문제가 없는데, 개발 배포를 하면 위와 같은 에러가 발생한다. 현재 개발서버는 jar로 배포를 하고 있다.
File file = new ClassPathResource("mail.html").getFile();
springboot를 통해서 jar 파일로 만들게 될 경우, class file,resource 등을 하나로 합친 jar파일 한개가 생성된다. 이때 jar파일의 프로토콜은 jar: 시작하게 된다. 즉 IDE에서의 file 시스템과 경로가 다르다.
그렇다면, jar파일로 패키징 했을 때 resource를 file로 받아올 수 있는 방법이 없을까??
=> resource를 InputStream으로 리턴받아서 사용하면된다.
InputStream inputStream = new ClassPathResource("mail.html").getInputStream();
File file = File.createTempFile("mail",".html");
FileUtils.copyInputStreamToFile(inputStream,file);