Ответ
ClassLoader не участвует в процессе компиляции. Его работа начинается во время выполнения программы (runtime).
Фазы работы с классом:
- Компиляция (compile-time): Компилятор
javacпреобразует.javaисходники в.classфайлы (байт-код). Проверяется синтаксис и статическая типизация. - Загрузка (runtime): JVM с помощью
ClassLoaderвыполняет:- Поиск
.classфайла поclasspath. - Загрузку байт-кода в память.
- Связывание (проверка, подготовка, разрешение символов).
- Инициализацию (выполнение статических блоков).
- Поиск
Иерархия загрузчиков (на примере Java 11+):
Bootstrap ClassLoader (загружает core JDK классы: java.lang, java.util)
↑
Platform ClassLoader (загружает модули платформы)
↑
Application ClassLoader (загружает классы приложения из classpath)
Вывод: ClassLoader — это механизм динамической загрузки классов во время выполнения, а не часть компилятора.