/ / Кастинг об'єкта створено за допомогою URLClassLoader до типу інтерфейсу - java

Кастинговий об'єкт створено за допомогою URLClassLoader для типу інтерфейсу - java

Я намагаюся завантажити класи з файлу jar і створити екземпляри цих класів. Усі класи реалізують інтерфейс IModule.

Екземпляр створюється успішно, але кожного разу, коли я намагаюся передати об'єкт типу IModule, я отримую ClassCastException.

Це мій код:

urlCl = new URLClassLoader(new URL[] { classFile.toURL()},System.class.getClassLoader());
Class projectClass = urlCl.loadClass("Project");
IModule projectObj = (IModule) projectClass.newInstance();

Мої проекти перебувають у затемненні: IModule є окремим проектом, який додається до класового шляху як "Project", так і "Loader".

Будь-які пропозиції щодо того, що я роблю неправильно? Дякую.

Відповіді:

1 для відповіді № 1

У Java клас або інтерфейс ідентифікується повним кваліфікованим ім'ям та завантажувачем класів, який його завантажив.

Ймовірно, ви намагаєтесь передати об’єкт у правильний інтерфейс, але завантажений іншим завантажувачем.

Подивіться на це:

Рішення для ClassCastException через проблему ClassLoader