@frankwolf

Как создать простое pluggable приложение Java + Maven?

Я решил сделать для своего desktop-приложения на Java возможность его расширения за счет плагинов. Суть загрузки плагинов такова: приложение ищет в определенной директории jar-файл плагина и его дескриптор, описывающий название, версию, главный класс и т.д., с помощью URLClassLoader данный плагин загружается в приложение. При этом у плагина и у приложения должно быть подключено API, которое служит для взаимодействия плагина и приложения.

Я реализовал это и приступил к тестированию. При этом приложение, плагин к нему, API используют Maven

API подключается к приложению и плагину данным образом:
<dependency>
		<groupId>название</groupId>
		<artifactId>название api</artifactId>
		<version>версия api</version>
		<scope>system</scope>
		<systemPath>${basedir}/api.jar</systemPath>
	</dependency>


В приложение я загружаю плагин так:
loader = new URLClassLoader(new URL[] {info.getPluginJar().toURI().toURL()}, ClassLoader.getSystemClassLoader());
plugin = (Plugin) loader.loadClass(info.getMainClass()).newInstance();


Но при запуске возникает ошибка:
Exception in thread "main" java.lang.NoClassDefFoundError: название/пакет_api/PluginContext
Caused by: java.lang.ClassNotFoundException: название.пакет_api.PluginContext
Я так понял, что приложение не видит классы API, которые используются внутри плагина. И как быть в данной ситуации, я не знаю.
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 1
@frankwolf Автор вопроса
Решение: Не использовать подключение API данным способом

<dependency>
    <groupId>название</groupId>
    <artifactId>название api</artifactId>
    <version>версия api</version>
    <scope>system</scope>
    <systemPath>${basedir}/api.jar</systemPath>
  </dependency>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час
02 мая 2024, в 23:16
7500 руб./за проект