2016-09-09 7 views
0

を使用したOSGiの開発、私はランタイムとしてApache's felix Apacheのフェリックスを選んだ、私が遭遇した問題点は以下の通りです: the screenshot is here私はのIntelliJ IDEAを使用したOSGiアプリケーションを開発するために勉強のIntelliJ IDEA

モジュールの例1をIを開発しました、2と2b、2bのパッケージ構造は2と同じですが、サービスインタフェースはモジュール2にあり、モジュール2bはサービスを代替するように設計されていますが、それはできません。 2bはself.gale.services.DictionaryServiceを見つけることができませんでした。モジュール2bは、モジュール2の正確なパッケージに定義されているサービスを見つける方法を知らないのです。

I guess the problem is here

モジュール2Bの活性化剤の開始方法:

public void start(BundleContext context) 
{ 
    Hashtable<String, String> props = new Hashtable<>(); 
    props.put("Language", "French"); 
    context.registerService(
      DictionaryService.class.getName(), new DictionaryServiceImpl(), props); 
} 

モジュール2B インポートパッケージのマニフェストプロパティ:org.osgi.framework、自己。 gale.services

パッケージself.gale.servicesはこの2bではなくモジュール2にありますが、そのパッケージが見つからないようです。

+0

コード(スクリーンショットではありません)。 – chrylis

答えて

2

また、バンドル "2" MANIFESTファイルのExport-Packageに公開されている "self.gale.services"を提供し、両方のMANIFESTファイルの "self.gale.services"のバージョンが互いに対応していることを確認する必要があります。

+0

はい、あなたは絶対に正しいです。実際には、前にバンドル2で 'self.gale.services'をエクスポートしましたが、その行の後に**、version =" 1.0 "**(どこでコピーしたのか分かりません。 )、今私はこれを削除し、私はフェリックスから正しい答えを得る。とにかく、ありがとう。 –

関連する問題