BND помещает один и тот же пакет в разделы экспорта и импорта файла manifest.mf - PullRequest
3 голосов
/ 11 сентября 2011

У меня есть приложение Vaadin, которое я пытаюсь построить как набор OSGI-пакетов, используя Maven + BND.

Я не могу развернуть пакеты в Apache Felix, потому что некоторые зависимости не могут бытьрешена.Apache Felix жалуется, что не может найти пакет XYZ, требуемый для пакета «A», хотя этот пакет определен в этом же пакете !!

Я посмотрел на файл MANIFEST.MF, созданный Maven + BND, и увидел, чтопакет (XYZ) из этого пакета добавляется в разделы «import» и «export».Я понимаю, почему "экспорт", но почему "импорт" ??Почему пакет пытается импортировать свой собственный пакет?

my MANIFEST.MF

Manifest-Version: 1.0
Export-Package: myexample.admin;uses:="com.vaadin.ui,myexample.webshared,
 com.vaadin.terminal,myexample.mvc.view.impl,
 myexample.mvc.model,myexample.mvc.renderer.map.impl,
 myexample.mvc.renderer,myexample.mvc.model.impl,myexample.util"
Built-By: ask
Tool: Bnd-0.0.384
Bundle-Name: admin
Created-By: 1.6.0_21 (Sun Microsystems Inc.)
Bundle-Version: 0
Build-Jdk: 1.6.0_26
Bnd-LastModified: 1315674240833
Bundle-ManifestVersion: 2
Import-Package: myexample.admin;version="1.0",myexample.mvc.model,
 myexample.mvc.model.impl,myexample.mvc.renderer,
 myexample.mvc.renderer.map.impl,myexample.mvc.view.impl,
 myexample.util,myexample.webshared,com.vaadin.terminal,com.vaadin.ui
Bundle-SymbolicName: admin
Include-Resource: ..\classes
Originally-Created-By: Apache Maven Bundle Plugin

Ответы [ 2 ]

6 голосов
/ 11 сентября 2011

Это правильное поведение. Объяснение приведено в разделе 3.5.6 спецификации ядра OSGi.

Относительно неразрешенной ошибки Феликса ... это должно быть связано с чем-то другим. Пожалуйста, оставьте фактическое сообщение об ошибке.

2 голосов
/ 13 сентября 2011

Ниль, конечно, правильно. Честно говоря, я очень успешно использовал noimports: = true, чтобы обойти это. В моих приложениях у меня обычно есть следующее в моем разделе maven-bundle-plugin:

<Export-package>*;noimports:=true</export-package>

В результате все ваши пакеты будут экспортированы в OSGi, и ни один из них не появится в разделе ваших пакетов импорта. Если вам нужно только несколько экспортированных пакетов, чтобы они не отображались в разделе пакетов импорта, вы можете установить флаг noimports для каждого отдельного пакета. Наконец, этот синтаксис взят из BND, поэтому он также должен работать в ваших .bnd файлах.

...