【클래스 로더 소개】
클래스 로더는 클래스 파일을 JVM 가상 컴퓨터에로드하는 데 사용됩니다. JVM에는 부트 스트랩 클래스 로더, 확장 클래스 로더 및 애플리케이션 클래스 로더에는 세 가지 유형의 로더가 있습니다. 또한 java.lang.classloader 클래스를 상속하여 사용자 정의 로더를 생성 할 수도 있습니다.
【클래스 로더 유형 load
1. 부트 스트랩 : 자바 클래스가 아닙니다. C ++로 작성되었으며 JVM 커널에 내장되어 있으며 JNI (JavanativeInterface)를 사용하여 기본 코드 실행을 호출하는 데 사용됩니다. Boot Class 로더는 Java_Home/JRE/Lib의 Rt.jar 파일과 같은 Core Java 클래스 라이브러리를로드 할 책임이 있습니다. 이 JAR 파일에는 다음과 같은 몇 가지 공통 클래스가 포함됩니다.
java.lang.system java.util.hashmap
2. Extclassloader : Java.lang.classloader 클래스에서 상속, Extension Path 아래에 JAR 파일을로드하는 데 사용되는 확장 경로는 Java_Home/JRE/Lib/Ext입니다.
3. 애플리케이션 클래스 로더 (AppClassLoader) : java.lang.classloader 클래스의 상속, 클래스 경로 아래의 클래스를로드하는 데 사용됩니다. 큰 소리로 웃고 있습니다
Class 클래스 로더의 대표 메커니즘】
1. 응용 프로그램이 클래스를로드 해야하는 경우 필요한 클래스의 바이트 코드 파일은 부트 스트랩, ExtClassLoader 및 AppClassLoader의 순서대로 해당 경로에로드됩니다.
2. 사용자 정의 클래스를 클래스 파일로 컴파일하고 JAR 패키지에 입력하여 Java_Home/JRE/LIB/EXT PATH에 배치 할 수 있습니다. 클래스 로더가로드되면 ExtClassLoader 로더를 사용하여 JAVA_HOME/JRE/LIB/EXT PATH에서로드되며 AppClassLoader 로더를 사용하여 클래스 경로 아래로로드되지 않습니다.
3. 부트 스트랩, ExtClassLoader, AppClassLoader 및 클래스로드 실패로 클래스 로더를 사용한 후 클래스는 찾을 수 없습니다 : java.lang.classNotFoundException
【응용 프로그램 데모 o
1. Bootstrap : JVM 커널에 내장 된 C ++로 작성된 Java 클래스가 아닙니다.
클래스 로더 로더 = System.class.getClassLoader (); System.out.println (로더); // 널
2. AppClassloader : AppClassLoader 로더를 사용하여 클래스 경로 아래 클래스를로드하십시오.
클래스 로더 로더 = ClassLoaderTest.class.getClassLoader (); System.out.println (loader.getClass (). getName ()); //sun.misc.launcher$ aptclassloader
3. extClassLoader : Java_Home/JRE/LIB/EXT PATH에 따라 Java 클래스를로드하는 데 사용됩니다. 일단 발견되면 클래스 경로에로드되지 않습니다.
사용자 정의 hello 클래스를 작성하고 항아리 패키지에 입력하여 c : /programfiles/java/jdk1.7.0/jre/ext/excelsoft.jar path로 내 보냅니다.
클래스 로더 로더 = hello.class.getClassLoader (); System.out.println (loader.getClass (). getName ()); //sun.misc.launcher$extclassloader
=========================================
클래스 로더는 소개를 위해 비교적 복잡한 주제입니다!
요약
위의 것은 JVM 클래스 로더의 기본 분석에 대한이 기사의 모든 내용이며, 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!