В последнее время я много читал о загрузке классов Java. Часто я сталкивался с текстами, в которых утверждалось, что во время выполнения невозможно добавлять классы в путь к классам и загружать их без хакера класса (URLClassLoaders и т.д.).
Насколько я знаю, классы загружаются динамически. Это означает, что их представление байт-кода только загружается и преобразуется в объект java.lang.Class при необходимости.
Итак, не следует ли добавлять JAR или *.class файл в путь к классам после запуска JVM и загрузки этих классов при условии, что они еще не загружены? (Чтобы быть ясным: в этом случае путь к классам - это просто папка в файловой системе. "Добавление файла JAR или *.class" просто означает удаление их в этой папке.)
И если это не так, означает ли это, что путь к классу проверяется при запуске JVM, и все полные имена найденных классов кэшируются во внутреннем "списке"?
Было бы здорово, если бы вы могли указать мне некоторые источники в своих ответах. Предпочтительно официальная документация SUN: Sun JVM Spec. Я прочитал спецификацию, но ничего не нашел о пути к классам, и если она была завершена при запуске JVM.
P.s.
Это теоретический вопрос. Я просто хочу знать, если это возможно. Я ничего не хочу практиковать. Есть только моя жажда знаний:)