Да, есть способы загрузить классы и «разгрузить» их позже. Хитрость заключается в том, чтобы реализовать свой собственный загрузчик классов, который находится между загрузчиком класса высокого уровня (загрузчик класса System) и загрузчиками классов серверов приложений, и надеяться, что загрузчики классов сервера приложений делегируют загрузку классов в верхние загрузчики .
Класс определяется его пакетом, его именем и загружаемым им загрузчиком классов. Запрограммируйте загрузчик классов «прокси», который является первым, который загружается при запуске JVM. Рабочий процесс:
java.x
и sun.x
системному загрузчику классов (эти не должны загружаться через любой другой загрузчик классов, чем системный загрузчик классов). Выполнено прямо там не должно быть ClassCastException или LinkageError и т. д.
Для получения дополнительной информации о иерархиях загрузчика классов (да, это именно то, что вы здесь реализуете;) смотрите «Сервер Java Programming "Теда Ньюварда - эта книга помогла мне реализовать что-то очень похожее на то, что вы хотите.