2016-12-13 6 views
0

DependencyManagerを私のコンポーネントに注入しようとしています。 BundleContextが注入されますが、DependencyManagerは(@Inject)ではありません。私は間違って何をしていますか?dependencymagerのOSGi注入

import org.apache.felix.dm.DependencyManager; 
import org.apache.felix.dm.annotation.api.Component; 
import org.apache.felix.dm.annotation.api.Init; 
import org.apache.felix.dm.annotation.api.Inject; 
import org.apache.felix.dm.annotation.api.Start; 
import org.osgi.framework.BundleContext; 

@Component 
public class InjectionExample 
{ 
    @Inject 
    BundleContext bundleContext; 

    @Inject 
    DependencyManager manager; 

    @Init 
    void init() 
    { 
     System.out.println("Bundle Context: " + bundleContext); 
     System.out.println("Manager: " + manager); 
    } 

    @Start 
    void start() 
    { 
     System.out.println("start"); 
    } 
} 
+0

マネージャの「@Inject」ではなく「@ServiceDependency」アノテーションを試しましたか? –

+0

はい、あります。私は "問題"を発見した。私は依存マネージャの2つのバージョンを使用しました。今私はそれが動作する1つのバージョンに強制した。 – OblongZebra

答えて

1

「問題」が見つかりました。私のプロジェクトでは、依存関係マネージャの2つの異なるバージョンが使用されています。あるバージョンの使用を強制した後、それは動作します。