javase とソリューション osgi (felix)+cdi(weld)+paxcdi を使用しています。2 つのバンドル A と B があります。バンドル B は lib バンドルです。
バンドル AI には、1 つのクラスと 1 つのパッケージがあります。
package com.example.firstpackage;
import com.example.secondpackage.Class2;
public class Class1{
@Inject
private Class2 class2;
}
バンドル BI には 2 つのクラスと 2 つのパッケージがあります
package com.example.secondpackage;
import com.example.thirdpackage.Class3;
public class Class2{
@Inject
private Class3 class3;
}
と
package com.example.thirdpackage;
public class Class3{
....
}
両方のバンドルをインストールして開始します。
問題-バンドルAのクラスに注入するためのpax(または溶接)は、バンドルAのクラスにインポートされたパッケージのみをスキャンします。私の例では、Class1 Class2に注入するためのCDIは、バンドルBのcom.example.secondpackageをスキャンします。 Class2 には Class3 が必要ですが、com.example.thirdpackage はバンドル A に対してスキャンされないため、例外がスローされます (インポートされていないため!!!)。com.example. thirdpackage はバンドル B に対してのみスキャンされますが、cdi のすべてのバンドルには独自のスコープがあることを理解しています。修正方法は?