我使用 javase 和解决方案 osgi (felix)+cdi(weld)+paxcdi。我有两个包 A 和 B。包 B 是一个 lib 包。
在捆绑包中,AI 有一个类和一个包。
package com.example.firstpackage;
import com.example.secondpackage.Class2;
public class Class1{
@Inject
private Class2 class2;
}
在捆绑 BI 中有两个类和两个包
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 的每个包都有自己的范围。如何解决?