Java의 ClassLoader는 Java로 클래스 파일을로드하는 데 사용되는 클래스입니다.java의 classloader는 클래스 자체이며 클래스 로더 클래스를로드 할 사람은 누구입니까?
은 java.lang.ClassLoader의이 추상 클래스를 여기
내 질문은이 java.lang.ClassLoader의 클래스는 JVM의 클래스 로더 (1. 부트 스트랩 클래스 로더 2. 확장 클래스 로더 3에 관련된 모든 방법입니다 않습니다. 시스템 클래스 로더)?
또는이 java.lang.ClassLoader는 사용자 정의 클래스 로더를 만드는 데 사용할 수있는 별도의 클래스입니까?
클래스 로더는 Java 클래스를 Java 가상 시스템에 동적으로로드하는 Java Runtime Environment의 일부입니다. JVM은 세 개의 클래스 로더가
부트 스트랩 클래스 로더
확장 클래스 로더
- 을 사용하는 시작되면이 라이브러리에 포함 된 클래스, 라이브러리의 위치가 내용을 읽고로드에 대한 책임 시스템 클래스 로더
부트 스트랩 클래스 로더가 코어 Java 라이브러리를로드합니다. 그것은 원시 코드로 작성됩니다. 부트 스트랩 클래스 로더는 java.lang.Object와 같은 주요 자바 클래스와 다른 런타임 코드를 메모리에 로딩합니다. 런타임 클래스는 jre/lib/rt.jar 파일에 패키지화되어 있습니다.
확장 클래스 로더는 확장 디렉토리에 코드를로드합니다. ExtClassLoader 클래스에 의해 구현됩니다.
시스템 클래스 로더는 시스템 클래스 경로 변수에 매핑되는 java.class.path에있는 코드입니다. AppClassLoader 클래스에 의해 구현됩니다. 기본적으로 모든 사용자 클래스는 시스템 클래스 로더에 의해로드됩니다.
Java ClassLoader는 계층 적이며 클래스를로드하기 위해 요청이 제기 될 때마다 클래스를 부모에게 위임하므로 런타임 환경에서 고유성이 유지됩니다. 친 클래스 로더가 클래스를 찾지 않으면 클래스 로더 자체가 클래스를로드하려고 시도합니다. System 클래스 다음 발견되지 않는 경우는 다음 확장 클래스 로더가 클래스를 검색합니다 발견되지 않는 경우는
은 그래서 먼저 시스템 클래스 로더가 클래스를 검색합니다 여기에 클래스 로더를 부트 스트랩 요청을 위임합니다 확장 클래스 로더에 요청을 위임 의미 로더가 클래스를 검색하지 않으면 클래스가 검색됩니다. ClassNotFoundException
JVM은 항상 클래스를로드하기위한 시스템 클래스 로더로 시작합니까?
내가 틀렸다면 정정 해줘 어떤