3

Maven + BND を使用して OSGI バンドルのセットとして構築しようとしている Vaadin アプリケーションがあります。

一部の依存関係を解決できないため、バンドルを Apache Felix にデプロイできません。Apache Felix は、バンドル "A" に必要なパッケージ XYZ が見つからないと文句を言いますが、このパッケージはこの同じバンドルで定義されています!!

Maven + BND によって生成された MANIFEST.MF ファイルを調べたところ、このバンドルのパッケージ (XYZ) が「インポート」セクションと「エクスポート」セクションの両方に追加されていることがわかりました。「輸出」の理由はわかりますが、「輸入」の理由は?? バンドルが独自のパッケージをインポートしようとするのはなぜですか?

私の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
4

2 に答える 2

7

これは正しい動作です。説明は、OSGiコア仕様のセクション3.5.6にあります。

フェリックスからの未解決のエラーに関して...これは何か他のものに関連しているに違いありません。実際のエラーメッセージを投稿してください。

于 2011-09-10T23:33:29.953 に答える
2

もちろんニールは正しい。正直なところ、私は noimports:=true を使用してこれを回避することに非常に成功しています。私のアプリケーションでは、通常、maven-bundle-plugin セクションに次のものがあります。

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

これにより、すべてのパッケージが OSGi にエクスポートされ、インポート パッケージ セクションには表示されなくなります。import-package セクションに表示されないようにエクスポートされたパッケージがいくつか必要な場合は、個々のパッケージごとに noimports フラグを設定できます。最後に、この構文は BND からのものであるため、.bnd ファイルでも機能するはずです。

于 2011-09-13T19:12:40.157 に答える