6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351
1

Не удается динамически подгрузить класс

01.11.2017, 20:13. Показов 375. Ответов 0
Метки нет (Все метки)

Доброго времени суток!

Пытаюсь динамически создать объект необходимого класса, однако (никак не пойму чего) получаю:
java.lang.InstantiationException: figure.Figure
at java.lang.Class.newInstance(Unknown Source)
at commands.PluginController.readPlugins(PluginController.java: 62)
at main.Launcher.main(Launcher.java:10)

В самом .jar файле лежит пакет figure с интерфейсом IFigure и классом Figure (который имплементирует этот интерфейс).
Подскажите, пожалуйста, что я делаю не так?

Заранее благодарю за любые подсказки и решения данной проблемы!

Вот код класса, который подгружает .jar с классом:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public static void readPlugins()
{
    // Loading and checking all plugins (подгрузка всех .jar файлов)
    File pluginDir = new File("plugins");
 
    File[] jars = pluginDir.listFiles(new FileFilter()
    {
        public boolean accept(File file)
        {
            return file.isFile() && file.getName().endsWith(".jar");
        }
    });
 
    // Load Class model for each of the loaded plugins (выборка необходимого класса из всех .jar файлов)
    Class[] pluginClasses = new Class[jars.length];
 
    for (int i = 0; i < jars.length; i++)
    {
        try
        {
            URL jarURL = jars[i].toURI().toURL();
            URLClassLoader classLoader = new URLClassLoader(new URL[]{jarURL});
            pluginClasses[i] = classLoader.loadClass("figure.Figure");
 
        }
        catch (MalformedURLException | ClassNotFoundException e)
        {
            e.printStackTrace();
        }
    }
 
    // Creation of an object for each Class (динамическое создание выбранного класса из каждого .jar)
    for (Class clazz : pluginClasses)
    {
        try
        {
            IFigure instance = (IFigure) clazz.newInstance(); // ТУТ БРОСАЕТ ЭТУ ОШИБКУ
            figures.add(new Figure(instance));
        }
        catch (InstantiationException e)
        {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace();
        }
    }
}


P.S. пробовал ранее на другом примере - все работало, а что тут - вообще не понимаю...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2017, 20:13
Ответы с готовыми решениями:

System.IO.FileNotFoundException - не удаётся подгрузить dll
Здравствуйте, декомпилировал код с помощью dotPeek программу, экспортировал в проект на C#,...

Как динамически подгрузить массив ocx-ов, имея доступ к их событиям?
С одним ActiveX-ом все понятно: Public WithEvents objExt As VBControlExtender ... Set objExt =...

Почему не удается подгрузить файл в формате JSON?
&lt;!doctype html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;link rel=&quot;stylesheet&quot;...

Как преобразовать класс из динамически сгенерированного кода в локальный класс?
Исходные данные: Форма, на ней кнопка, по нажатию на которую компилируется программа, совершает...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2017, 20:13

класс заполняющийся динамически
люди, помогите. по безопасности задали лабу, одним из элементов программы должна быть таблица...

Как добавлять класс динамически
Люди, возникла проблема в следующем ,если кто знает подскажите плиз. Допустим есть некий объект А...

Динамически менять класс переменных
Такой вопрос, есть несколько подключений к разным БД Mysql, SQL, Oracal как сделать так чтобы в...

Добавить динамически активный класс в субменю
Имеется код: &lt;ul class=&quot;uk-subnav uk-subnav-line uk-margin-remove&quot;&gt; &lt;li class=&quot;uk-h3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.