Загрузчик классов может загрузить класс только один раз! Это означает, что он может определить его только один раз. Он может загружать его много раз, но только в первый раз. В остальное время он будет загружать существующий экземпляр, который он уже определил с первого раза.
Попытка определить класс дважды приводит к LinkageError
«дублированного определения класса». Если необходимо загружать и перезагружать классы много раз, то это должны делать разные загрузчики классов, например:
Создайте собственный загрузчик классов, который будет загружать ваши классы. Если вы хотите перезагрузить любой класс, вы должны уничтожить ваш загрузчик классов, а затем создать его новый экземпляр, который будет загружать новые версии ваших классов.
Конечно, это вызывает дополнительную нагрузку, но если вам это нужно, это нормально.
Кроме того, будьте осторожны и не оставляйте ссылки на ваши классы при уничтожении старого экземпляра вашего загрузчика классов, так как это приведет к утечке памяти!