Классный загрузчик может загружать только один класс один раз! Это означает, что он может определить его только один раз. Он может загружать его много раз, но только в первый раз, когда он определит его. В остальное время он будет загружать существующий экземпляр, который он уже определил с первого раза.
Попытка определить класс дважды вызывает LinkageError
«определение дублирующего класса». Если необходимо, чтобы классы загружались и перезагружались много раз, это должно выполняться разными загрузчиками классов следующим образом:
Создайте собственный загрузчик классов, который будет загружать ваши классы. Когда вы хотите перезагрузить любой класс, вы должны уничтожить свой загрузчик классов, а затем создать новый экземпляр, который будет загружать новые версии ваших классов.
Конечно, это вызывает дополнительную нагрузку, но если вам это нужно, это нормально.
Кроме того, будьте осторожны, чтобы не оставлять ссылки на ваши классы, когда они разрушают старый экземпляр вашего загрузчика классов, поскольку это приведет к утечке памяти!
Возможно, вам понадобится [OSGI] (http://en.wikipedia.org/wiki/OSGi) – stivlo
принятый ответ на этот вопрос весьма полезен: http://stackoverflow.com/questions/148681/unloading-classes -in-java – laher