Скажем, класс Helper.class находится в core.jar, который находится в CLASSPATH и загружается загрузчиком системных классов.
PluginMain.class и PluginWidget.class находятся в plugin.jar, но plugin.jar нет в CLASSPATH.
Как часть системы плагинов, плагин создает новый загрузчик классов с именем PluginClassLoader, использует его для загрузки PluginMain.class из plugin.jar и вызывает PluginMain.start ().
Инверсия загрузчика классов происходит, если PluginMain.start () вызывает Helper.deluxeLoadClass («PluginWidget.class»), а deluxeLoadClass () в конечном итоге вызывает Class.forName («PluginWidget.class»).Это терпит неудачу, потому что Helper.class был загружен загрузчиком системного класса, который не может видеть PluginWidget.class, так как загрузчик системного класса не имеет plugin.jar в своем classpath.
Пример немного надуманный, но такие вещи происходят чаще в контейнерах J2EE, которые используют иерархии загрузчиков сложных классов .