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/ /
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바, jar 패키지 에서 자원 파일 읽 기리 소스 Jar. jar 의 리 소스 클래스 를 호출 할 때 JVM 은 리 소스 클래스 에 불 러 오고 리 소스 가 실 행 될 때의 정 보 를 기록 합 니 다 (리 소스 가 있 는 jar 패키지 의 경로 정보 포함)...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.