2012-03-19 16 views
8

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を見つけることができないようですが、そのがインストールされ、開始:私はプロデューサーのサービスを開始したい場合しかし、私はこのエラーを取得しますか?

+0

あなたはそのパッケージを確認する春分のコンソールと実行「パッケージat.foobar.osgi.api」を解雇しましあなたのAPIバンドルによってエクスポートされますか?パッケージの巨大なスクロールリストを取得した場合、それはパッケージがそのパッケージをエクスポートすることを意味しません。また、APIバンドルがどのパッケージをエクスポートするかを確認するには、[bundle [api-bundle-name]]を試してみてください。 –

+0

mh APIをエクスポートするのを忘れてしまったのですが、どうして私はそれをエクスポートする必要があるのですか?私はコア仕様を読んで、APIパッケージをosgiによって解決されたのでエクスポートしてはならないと考えましたか? – reox

+2

パッケージは、バンドルによってエクスポートされるか、バンドルに含まれている必要があります(つまり、リストされたir Private-Package)。あなたはどちらもしていないので、BndはそれをImportedパッケージとして検出します。おそらく、他のバンドルが使用したいかもしれないAPIのように聞こえるので、エクスポートは正しいと思われます。 –

答えて

6

サービスパッケージをバインドできるように、APIパッケージをエクスポートしていることを確認してください。あなたのような何かを持っている必要がありAPIバンドルのためのあなたのmaven-バンドル・プラグインで

は:

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

あなたはちょうどアルコール性になることから私を救った。非常に非常にありがとう! – Chris

関連する問題