ClassLoader에 대한 작은 실험

2585 단어 ClassLoader
package t;

import java.net.URL;

public class Test2 {

	public static void main(String[] args) throws Exception {

		ClassLoader loader1 = ClassLoader.getSystemClassLoader();
		ClassLoader loader2 = Thread.currentThread().getContextClassLoader();
		ClassLoader loader3 = Test2.class.getClassLoader();
		System.out.println("loader1==loader2	"+(loader1==loader2));
		System.out.println("loader1==loader3	"+(loader1==loader3));
		
		//       ClassLoader
		Thread.currentThread().setContextClassLoader(new ClassLoader(){});
		loader2 = Thread.currentThread().getContextClassLoader();
		System.out.println("loader1==loader2	"+(loader1==loader2));
		
		URL url = loader1.getResource("");
		System.out.println("url="+url);
		System.out.println("url.getPath()="+url.getPath());
	}
}

 
출력:
loader1==loader2	true
loader1==loader3	true
loader1==loader2	false
url=file:/D:/workspace1/TestOrac/bin/
url.getPath()=/D:/workspace1/TestOrac/bin/

 
몇 가지 설명:
ClassLoader java.lang.ClassLoader.getSystemClassLoader()가 위임된 시스템 클래스 로더를 반환합니다.이 로더는 새 ClassLoader 인스턴스의 기본 위임 상위 클래스 로더이며 일반적으로 응용 프로그램을 시작하는 클래스 로더입니다.
ClassLoader java.lang.Thread.getContextClassLoader () 는 이 라인의 상하문 ClassLoader를 되돌려줍니다.상하문 ClassLoader는 스레드 창설자가 제공합니다. (Thread는 setContextClassLoader (ClassLoader cl) 방법은 이 스레드에 ClassLoader를 지정하는 데 사용됩니다. 이 스레드에서 실행되는 코드는 클래스와 자원을 불러올 때 사용됩니다.설정되지 않은 경우 기본값은 상위 스레드의 ClassLoader 컨텍스트입니다.원래 스레드의 컨텍스트 ClassLoader는 일반적으로 응용 프로그램을 로드하는 클래스 로더로 설정됩니다.
ClassLoader java.lang.Class.getClassLoader()가 클래스의 클래스 로더를 반환합니다.일부 구현은 가이드 클래스의 마운트를 표시하기 위해null을 사용할 수 있습니다.이 클래스가 가이드 클래스 마운트에 불러오면, 이 방법은 이 클래스에서 null로 되돌아옵니다.
 
Classloader 정보getResource()
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

public class Test {

	public static void main(String[] args) throws UnsupportedEncodingException {

		String url =Thread.currentThread().getContextClassLoader().getResource("").getPath();
		
		System.out.println("before:"+url);
		
		System.out.println("after:"+URLDecoder.decode(url, "utf-8"));
		
//		before:/C:/Program%20Files/%e6%96%b0%e5%bb%ba%e6%96%87%e4%bb%b6%e5%a4%b9/
//		after:/C:/Program Files/     /
	}
}

좋은 웹페이지 즐겨찾기