BackEnd
[Spring] Spring Boot Jar 배포 후 file not found Error
mingg123
2023. 2. 4. 18:42
apple 로그인 구현하던 와중에 key 관련된 파일을 다운받고, 파일 내용을 읽어오던 와중 문제를 직면했다.
우선 로컬에선 별 문제없이 찾아오지만, 배포하고 나면 Path.get(resource.getURI()) 에서 에러가 발생한다.
배포한 환경에 디버깅을 붇은 방법은 Remote JVM Debug 를 이용해서 붙어서 원인을 알 수 있었다.
String keyPath = "static/apple/애플키.p8";
ClassPathResource resource = new ClassPathResource(keyPath);
// 배포시 jar 파일을 찾지 못함
//String privateKey = new String(Files.readAllBytes(Paths.get(resource.getURI())));
resource.getURI() 를 입력해보면 jar ~~ 어쩌고 저쩌고 라고 분명히 경로가 있을 것이다.
개발환경에서는 classPath를 이용해서 접근이 가능했으나, jar 배포환경에서는 찾지못한다.
해결법은 다음과 같다.
ClassPathResource resource = new ClassPathResource(keyPath);
// 배포시 jar 파일을 찾지 못함
//String privateKey = new String(Files.readAllBytes(Paths.get(resource.getURI())));
InputStream in = resource.getInputStream();
String privateKey = IOUtils.toString(in, StandardCharsets.UTF_8);
Path.get() 과 Files.readAllBytes 대신 InputStream() 을 이용해서 파일을 읽어와주었다.