Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
6 / 6 / 7
Регистрация: 16.05.2013
Сообщений: 351

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

01.11.2017, 20:13. Показов 835. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2017, 20:13
Ответы с готовыми решениями:

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

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

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2017, 20:13
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru