APIを使用する小さなAPIバンドルとサービスバンドルを作成しました。インポートを解決できないため、osgiバンドルを開始できません。
<dependency>
<groupId>at.foobar.osgi.api</groupId>
<artifactId>foobarapi</artifactId>
<version>1.0</version>
</dependency>
私はバンドルを作成するためのmaven-バンドルプラグインを使用しています、と理由:私のMavenのpom.xmlファイルで
、私はこのような正しいバージョンで私のAPIバンドル用dependecyを追加しました私はmvn clean install
をjarファイルで作成しました。 マニフェストは、この(サービス)のようになります。私にとってはOKであるように思われ
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を見つけることができないようですが、そのがインストールされ、開始:私はプロデューサーのサービスを開始したい場合しかし、私はこのエラーを取得しますか?
あなたはそのパッケージを確認する春分のコンソールと実行「パッケージat.foobar.osgi.api」を解雇しましあなたのAPIバンドルによってエクスポートされますか?パッケージの巨大なスクロールリストを取得した場合、それはパッケージがそのパッケージをエクスポートすることを意味しません。また、APIバンドルがどのパッケージをエクスポートするかを確認するには、[bundle [api-bundle-name]]を試してみてください。 –
mh APIをエクスポートするのを忘れてしまったのですが、どうして私はそれをエクスポートする必要があるのですか?私はコア仕様を読んで、APIパッケージをosgiによって解決されたのでエクスポートしてはならないと考えましたか? – reox
パッケージは、バンドルによってエクスポートされるか、バンドルに含まれている必要があります(つまり、リストされたir Private-Package)。あなたはどちらもしていないので、BndはそれをImportedパッケージとして検出します。おそらく、他のバンドルが使用したいかもしれないAPIのように聞こえるので、エクスポートは正しいと思われます。 –