у меня есть такая конфигурация OSGi:Экспорт сверток с зависимостями с другими пучками
/configurations
config.ini
somebundle.properties
/plugins
bundleA
bundleB
osgi-3.4.2-R34x_v2008826-1230.jar
org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
org.eclipse.update.configurator_3.2.201.R34x_v20080819.jar
com.test.arquitectura.osgi.ConfiguratorModule_1.0.0.jar
Мой config.ini, как это:
[email protected]:start, \
[email protected]:start, \
[email protected]:start
osgi.clean = true
eclipse.ignoreApp=true
osgi.parentClassLoader=app
Так, AFAIK, когда я исполняю
java -Xms256M -Xmx1280M -jar osgi-3.4.2-R34x_v20080826-1230.jar
Он читает config.ini, так что пакеты equinox.common и update.configurator «обнаруживают» все пакеты, развернутые в папке/plugins. После этого ConfiguratorModule (настраиваемый набор) просто считывает все пакеты в контексте и запускает метод запуска каждого из них (bundleA и bundleB). У меня есть затмение проекта (bundleC), который использует некоторые clases определенные в bundleA и bundleB, поэтому MANIFEST.MF является:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: BundleC Plug-in
Bundle-SymbolicName: com.test.bundlec
Bundle-Version: 1.0.0
Bundle-Activator: com.test.bundlec.Activator
Import-Package: javax.naming,javax.sql,org.osgi.framework;version="1.3
.0",org.osgi.util.tracker;version="1.3.1"
Bundle-ClassPath: .
Require-Bundle: com.test.BundleA;bundle-version="1.0.0",
com.test.BundleB;bundle-version="1.0.0"
Итак, я хочу, чтобы создать плагин (JAR-файл) для проекта bundleC. Поскольку в опции «Требовать-расслоение» есть два пакета, эти проекты (BundleA и BundleB) должны быть в pathpath класса bundle, не так ли? Итак, в этом случае я просто создаю пакет (экспортируя его как «Разработка плагинов») и размещаю новый пакет в папке плагина. Есть что-то, что мне не хватает?
Ну, на всякий случай, все, что я сказал, верно, вот моя проблема. У меня есть файл-плагин для BundleA и BundleB, но у меня нет исходного кода, поэтому я получаю сообщение об ошибке при экспорте BundleC в плагин jar, потому что, как кажется, он не может найти требуемые классы. использует BundleA и BundleB. Есть ли способ генерировать плагин без необходимых пакетов в пути к классам?
Я пытался «декомпилировать» их, а затем создавать проекты и добавлять их в путь класса BundleC. Я могу создать плагин, а затем поместить его в папку плагинов, но при запуске osgi enviroment пакет bundleC не найден. Что я делаю неправильно?
Спасибо за ваши ответы
Просьба указать точную ошибку, которую вы получаете, любые следы стека и т. Д. – katsharp