не могу запустить пакет osgi, потому что импорт не может быть разрешен - PullRequest
8 голосов
/ 19 марта 2012

Я сделал небольшой Пакет API и пакет услуг, который должен использовать API.

В моем файле maven pom.xml я добавил зависимость для моего пакета API в правильной версии, подобной этой:

<dependency>
  <groupId>at.foobar.osgi.api</groupId>
  <artifactId>foobarapi</artifactId>
  <version>1.0</version>
</dependency>

Я использую плагин maven-bundle для создания пакетов, и поэтому я использовал mvn clean install для создания файла jar. Манифест выглядит так (услуга):

Manifest-Version: 1.0
Private-Package: at.foobar.osgi.producer
Built-By: foobar
Tool: Bnd-0.0.238
Bundle-Name: foobarproducer
Created-By: Apache Maven Bundle Plugin
Bundle-Version: 1.0
Build-Jdk: 1.6.0_26
Bnd-LastModified: 1332185439257
Bundle-ManifestVersion: 2
Bundle-Activator: at.foobar.osgi.producer.Activator
Import-Package: at.foobar.osgi.api,org.osgi.framework;version="1.4"
Bundle-SymbolicName: at.foobar.osgi.producer.foobarproducer

что для меня нормально. Там есть импорт, так что все должно быть хорошо.

Теперь я запустил равноденствие и установил API и пакет производителя. Затем я начал API, который работал хорошо. Но когда я хочу запустить службу производителя, я получаю эту ошибку:

org.osgi.framework.BundleException: The bundle "at.foobar.osgi.producer.foobarproducer_1.0.0 [4]" could not be resolved. Reason: Missing Constraint: Import-Package: at.foobar.osgi.api; version="0.0.0"

Кажется, что фреймворк не может найти API, но он установлен и запущен?

1 Ответ

6 голосов
/ 13 сентября 2013

Убедитесь, что вы экспортируете пакеты API, чтобы ваш сервисный пакет мог связываться с ними.

В вашем maven-bundle-plugin для пакета API у вас должно быть что-то вроде:

            <configuration>
                <instructions>
                    <Import-Package>
                        *
                    </Import-Package>
                    <Export-Package>
                        at.foobar.osgi.api.*
                    </Export-Package>
                </instructions>
            </configuration>
...