ClassLoader classLoader = this.getClass().getClassLoader();
String filePath = classLoader.getResource("/sample.txt").getPath();
이런식으로 classpath 경로에 있는 파일을 가져오도록 코드를 짰는데,
로컬에서는 잘 되지만 개발 서버에 올리니까 파일이 없다고 에러가 났다.
이걸 어찌하나.. 해서 검색해보니 여러 방법이 있었는데 다 실패하고..
File file = ResourceUtils.getFile(
"classpath:config/sample.txt"
)
이 방법으로 성공했다.
ResourceUtils 클래스는 org.springframework.util 패키지에 있는 클래스인데..
getFile 메소드 안을 들여다보니
public static ClassLoader getDefaultClassLoader() {
ClassLoader cl = null;
try {
cl = Thread.currentThread().getContextClassLoader();
}
catch (Throwable ex) {
// Cannot access thread context ClassLoader - falling back...
}
if (cl == null) {
// No thread context class loader -> use class loader of this class.
cl = ClassUtils.class.getClassLoader();
if (cl == null) {
// getClassLoader() returning null indicates the bootstrap ClassLoader
try {
cl = ClassLoader.getSystemClassLoader();
}
catch (Throwable ex) {
// Cannot access system ClassLoader - oh well, maybe the caller can live with null...
}
}
}
return cl;
}
이런식으로 가져오고 있었다.
갓갓..
참조 : https://howtodoinjava.com/java/io/read-file-from-resources-folder/
'Java' 카테고리의 다른 글
자바 클래스패스 파일 load (0) | 2018.09.27 |
---|---|
해쉬 이해하기(Java) (0) | 2018.09.12 |
Spring fileupload maven (0) | 2017.12.06 |
소켓 프로그래밍 실습 (0) | 2017.11.28 |
프로그래밍은 참 어렵다. (0) | 2017.11.21 |