Ваш код в основном в порядке, но похоже, что вы хотите больше контроля над самой средой OSGi.Другими словами, вы хотите знать, как запустить OSGi Framework и запустить свой пакет.Проблема, с которой вы столкнулись в настоящее время, заключается в том, что вы используете чей-то модуль запуска (Knopflerfish), который включает в себя KF GUI Console, и вы используете его для установки и запуска своего пакета.Однако ничего из этого не требуется.
В ответе А.В.Алчева он говорит о начале равноденствия с java -jar org.eclipse.osgi.jar -console
.Проблема такого подхода в том, что он дает вам пустой OSGi-фреймворк, поэтому вам придется вводить команды в оболочку OSGi, чтобы установить и запустить свой пакет ... тоже не идеально!
Я думаю, тебе стоит написать свой собственный лаунчер.На самом деле это очень просто и может быть сделано способом, который полностью независим от каких-либо конкретных реализаций OSGi.Я писал об этом в блоге некоторое время назад.
В псевдокоде ваше приложение запуска должно выглядеть примерно так:
public static void main() {
1. get a FrameworkFactory using java.util.ServiceLoader.
2. create an OSGi framework using the FrameworkFactory
3. start the OSGi framework
4. Install your bundle(s).
5. Start all the bundles you installed.
6. Wait for the OSGi framework to shutdown.
}
В вашемвопрос, который вы конкретно задаете о настройке места хранения комплекта.Это можно сделать, установив свойство Constants.FRAMEWORK_STORAGE
на карте, которое вы передаете в метод FrameworkFactory.newFramework
.