Читаю сейчас очень интересную статью Введение в Equinox.
Попытался сделать, как там написано, и наткнулся на некоторые проблемы.
Создал свой "бандл", запустил osgi, загрузил свой bundle
и пытаюсь его запустить
Получаю такую картину:
Не может найти класс. Что-то это как-то подозрительно. Потому, что этот класс есть в jar файле самого фреймворка osgi.
Не долго думая, я попробовал сгенерировать такой bundle используя wizard эклипса.
Это оказалось элементарно просто!
Выбираем в меню New->Project->Plug-in Project
Далее надо написать имя проекта и OSGi в качестве платформы
Далее надо нажать два раза "Next" и выбрать, что нам плагин нужен на основе примера (бандл)
Обратите внимание, что в файле MANIFEST.MF есть такая строчка:
Кстати, в этом манифесте можно сделать "экспорт" и получить готовый JAR файл:
Загрузим получившийся плагин и попробуем запустить:
Работает!! Супер!
Вывод: надо прописывать "Import-Package:" в манифест файле, чтобы все было ОК ;-)
Подписаться на:
Комментарии к сообщению (Atom)
8 комментариев:
Вывод неверный )) Если не указывать Import-Package то бандл импортирует ВСЕ доступные ему пэкеджы. В вашем же случае надо было указать
Require-Bundle: org.eclipse.osgi тогда ваш бандл будет в обязательном порядке импортировать пэкеджи из org.eclipse.osgi.
Т.е. сейчас вашему бандлу не будут доступны никакие пэкеджи кроме org.osgi.framework
Я забыл сказать, что брал манифест из вашего поста про Equinox. То есть он у меня выглядел вот так: http://alexlpt.narod.ru/images/osgi/osgi_test_10.png
И не работало!
Странно, потому что последней строчкой в приведенном мною манифесте как раз идет Require-Bundle:
Сейчас проверил. Все работает вот с таким манифестом:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Demo Plug-in
Bundle-SymbolicName: demo
Bundle-Version: 1.0.0
Bundle-Activator: demo.Activator
Require-Bundle: org.eclipse.osgi
Павел, спасибо!
Я стал разбираться, и оказалось, что когда я делал Export as Jar в eclipse, то он брал файл манифеста и выкидывал от туда строку "Require-Bundle: org.eclipse.osgi". Я долго мучился, но так и не понял, по какому принципу эклипс это делает. Поднял эту строку на несколько строчек выше и он перестал ее выбрасывать. В итоге заработало! Мистика какая-то!
Просто в получившемся после экспорта jar файле был совсем не такой манифест, какой я ему указывал. Я в шоке, почему же он выкидывал от туда строки.. я так и не нашел причину. Но в любом случае получил экспириенс))
>> Просто в получившемся после экспорта jar файле был совсем не такой манифест, какой я ему указывал.
Да, есть у эклипса такой глюк, поэтому я и советовал в своей статье проверить манифест получившегося jar-архива. Сам я собирал антом.
>> Но в любом случае получил экспириенс))
Это самое главное )
Отправить комментарий