Вам нужно сделать ваш текущий загрузчик классов родителем нового загрузчика классов, который вы загружаете, и убедиться, что в вашем банке нет копии интерфейса.
Ваша проблема предполагает, что у вас есть две копии интерфейса: одна в загрузчике основного класса, другая в новой. Возвращаемый объект использует тот, который находится в отдельном банке, но ваш класс использует основной. Они не одинаковы. Вы должны убедиться, что Java использует тот же «.class» для интерфейса при обработке загруженного класса, что и при компиляции вашего кода.
Первое, что нужно сделать, это «jar tf» на банке и посмотреть, верна ли моя гипотеза о двух экземплярах. Если так, удалите это. Попробуйте запустить. Если вы получили NoClassDef, исправьте конструкцию загрузчика.
new URLClassLoader(urlArray, Thread.currentThread().getContextClassLoader());
при условии, что ваша среда поддерживает загрузчик классов контекста. С другой стороны,
new URLClassLoader(urlArray, ScriptProcessor.class.getClassLoader());