반응형
상황
로컬(IDE) 환경에서 잘 실행되던 로직인데,
Jar파일로 실행할때 에러 발생 (FileNotFoundException)
Log
java.io.FileNotFoundException: src/main/resources/keystore/server.truststore (그런 파일이나 디렉터리가 없습니다)
원인
에러가 생기는 부분은 아래와 같다.
File trustStoreFile = new File(trustStoreFilePath);
- jar로 실행시에는, IDE에서의 file 시스템과 경로가 다름
- 로컬 IDE 환경에서 File을 사용하려 하면 file:// 로 시작되는 url (실제 파일 시스템으로 접근)
Jar 실행 환경에서 File을 사용하려 하면 jar://로 시작되는 url
반응형
해결 방법
inputStream을 이용
// 수정전
File file = new ClassPathResource(filePath).getFile();
// 수정후
InputStream instream = new ClassPathResource(filePath).getInputStream();
// InputStream 을 이용해 File 생성 후 사용하는 방법
File somethingFile = File.createTempFile("test", ".txt");
try {
FileUtils.copyInputStreamToFile(inputStream, somethingFile);
} finally {
IOUtils.closeQuietly(inputStream);
}
주의!
- File Path 변경
기본 classpath: src/main/resource
filePath=src/main/resource/keystore/test.jks
=> (아래로 수정)
filePath=keystore/test.jks - ClassPathResource(filePath).getFile();에서 에러 발생
java.io.FileNotFoundException: class path resource [파일] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/....
자세히 알고 싶다면 아래에서 확인
반응형
'개발 > 에러 디버깅' 카테고리의 다른 글
(디버깅) Connection reset by peer 에러 원인과 해결 방법 (0) | 2022.07.31 |
---|---|
(JAVA) UnknownHostException 에러 : java.net.UnknownHostException (1) | 2022.07.24 |
(Spring boot) properties의 값을 @Value로 읽으면 항상 null 인 문제 (0) | 2022.04.07 |