У меня следующая проблема:
Я пишу приложение, использующее некоторые JAR-файлы из платформы Netbeans. Если быть точным, я использую только визуальную библиотеку Netbeans для создания некоторых графиков. Это можно сделать без использования платформы Netbeans, извлекая 3 JAR-файла из платформы. Это все работает хорошо, за исключением 1 проблемы.
Немного фона
Я использую Java Simple Plugin Framework (JSPF) для управления моим плагином. Итак, у меня есть приложение, которое в основном состоит из каркасной структуры, и затем, в зависимости от того, какие JAR-плагины он находит, он может выполнять различные действия, одним из которых является рисование графиков. Плагин JAR для этой функции имеет все свои зависимые библиотеки внутри. Это можно сделать, экспортировав JAR как артефакт в IntelliJ, который разархивирует все зависимые библиотеки и переразметит их внутри вашей (так что все, что вам нужно, там).
Проблема
Кажется, что происходит то, что когда он пытается начать использовать классы из встроенных библиотек, он работает нормально, но когда ему нужны ресурсы (особенно в моем случае .png), он жалуется, что не может его найти.
Мои мысли
Единственное, что я могу вспомнить, почему он не работает, это то, что это может быть, так как JAR плагина не находится в пути к классам. Может ли это быть так?
Есть ли способ указать каталог classpath в MANIFEST? В противном случае я должен создать свой собственный ClassLoader
и вручную загрузить все файлы JAR в каталог плагинов?
Спасибо!
UPDATE:
Я впоследствии определил, что это действительно проблема с classpath. Если я помещаю свою составную библиотеку в путь к классам, все работает отлично. Проблема, с которой я сейчас сталкиваюсь, такова:
- Если я копирую библиотеку в
/Library/Java/Home/lib/ext/
, она работает нормально. Если я выполню приложение с java -cp "/path/to/plugins/myLib.jar" -jar Application.jar
, оно не будет работать.
- Как я могу загрузить все jar-файлы из каталога плагинов в свое приложение, чтобы использовать ресурсы внутри них?
Еще раз спасибо!