본문 바로가기

Java

get resouce from classloader 주의할점

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