sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | http://1 |
sitelink4 | http://ko |
sitelink5 | http://devday.tistory.com/570 |
sitelink6 | http://sitelink1 |
Class.getResource() 메소드는 해당 클래스의 소스 파일 위치를 상대 루트로 설정한다.
반면, ClassLoader.getResource()/getResources() 메소드는 클래스패스의 루트를 상대 루트로 설정한다.
다음은 이와 같은 차이를 보여주는 예제이다.
package test;
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
public class GetResourceExample {
public static void main(String[] args) {
Class<GetResourceExample> clazz = GetResourceExample.class;
URL resource = clazz.getResource(".");
System.out.println("resource: " + resource);
ClassLoader classLoader = clazz.getClassLoader();
try {
Enumeration<URL> resources = classLoader.getResources(".");
System.out.println("resources:");
while (resources.hasMoreElements()) {
URL nextElement = resources.nextElement();
System.out.println(nextElement);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
결과는 다음과 같다.
resource: file:/D:/%ec%9e%91%ec%97%85%ec%8b%a4/Java/JavaExample/bin/test/
resources:
file:/D:/%ec%9e%91%ec%97%85%ec%8b%a4/Java/JavaExample/bin/
Class.getResource() 메소드의 경우
해당 클래스가 포함된 패키지에 따른 디렉토리를 현재 디렉토리로 함을 알 수 있다.
반면, ClassLoader.getResources() 메소드의 경우
클래스패스의 루트를 현재 디렉토리로 함을 확인할 수 있다.