Java 在注入点[[field]@Inject]处具有限定符[@Default]的类型[***<;T>;]的未满足依赖关系

Java 在注入点[[field]@Inject]处具有限定符[@Default]的类型[***<;T>;]的未满足依赖关系,java,jboss,cdi,jboss-arquillian,Java,Jboss,Cdi,Jboss Arquillian,在部署到jboss arquilian服务器时,我遇到了以下问题(在部署本地jboss服务器时,我似乎没有遇到这些问题) org.jboss.weld.exceptions.DeploymentException:weld-001408类型[CarPolicyServiceWithContext]的未满足依赖项,在注入点[[field]@injectcom.athlon.thrift.web.utils.MSFOTContextUtils.carPolicyService]具有限定符[@Defa

在部署到jboss arquilian服务器时,我遇到了以下问题(在部署本地jboss服务器时,我似乎没有遇到这些问题)

org.jboss.weld.exceptions.DeploymentException:weld-001408类型[CarPolicyServiceWithContext]的未满足依赖项,在注入点[[field]@injectcom.athlon.thrift.web.utils.MSFOTContextUtils.carPolicyService]具有限定符[@Default]

注射 供应商
@ApplicationScoped
公共类服务提供者{
@注入
@任何
私家车服务;
私有静态最终字符串COUNTRY=“NL”;
私有静态最终记录器Logger=LoggerFactory.getLogger(ServiceProvider.class);
@产生
公共CarPolicyServiceWithContext getCarPolicyService(){
找到的实例=carPolicyServices.select(
新的国家限定符(国家));
info(“CarPolicyServiceWithContext-loaded”+found.toString());
返回find.get();
}
公共静态类限定符
扩展AnnotationLiteral
实施国{
私有字符串值;
公共CountryQualifier(字符串值){
这个值=值;
}
公共字符串值(){
返回值;
}
}
}
豆子
@Country(“NL”)
@适用范围
公共类CarpolicyNetherlands服务使用上下文实现CarPolicyServiceWithContext{
我在提供者中添加了一些日志,但我没有看到它打印在arquillian jboss日志中


谢谢!

在@Deployment归档文件中,出于某种原因,上面的ServiceProvider类没有添加到归档文件中。

在@Deployment归档文件中,出于某种原因,上面的ServiceProvider类没有添加到归档文件中。

您是否尝试创建war文件并进行了部署?在我看来,这更像是一个“问题”关于CDI配置,而不是arquillian问题。CDI是非常类型安全的,您的接口中有一个泛型。我不确定它与您的用例有什么关联,但这意味着您必须将其引用为
CarPolicyServiceWithContext
您确定该提供程序在您的arquillian部署中吗?它在您的re中吗还是你添加这个版本来支持测试?你是否尝试创建一个WAR文件并进行部署?在我看来,这更像是一个“问题”关于CDI配置,而不是arquillian问题。CDI是非常类型安全的,您的接口中有一个泛型。我不确定它与您的用例有什么关联,但这意味着您必须将其引用为
CarPolicyServiceWithContext
您确定该提供程序在您的arquillian部署中吗?它在您的re中吗还是你添加这个版本来支持测试?
@ApplicationScoped
public class MSFOTContextUtils {

    @Inject
    Logger logger;

    @Inject
    CarPolicyServiceWithContext carPolicyService;
@ApplicationScoped
public class ServiceProvider {

    @Inject
    @Any
    private Instance<CarPolicyServiceWithContext> carPolicyServices;



    private static final String COUNTRY = "NL";
    private static final Logger LOGGER = LoggerFactory.getLogger(ServiceProvider.class);

     @Produces
    public CarPolicyServiceWithContext getCarPolicyService() {
        Instance<CarPolicyServiceWithContext> found = carPolicyServices.select(
                new CountryQualifier(COUNTRY));
        LOGGER.info("CarPolicyServiceWithContext loaded"+found.toString());
        return found.get();
    }

    public static class CountryQualifier
            extends AnnotationLiteral<Country>
            implements Country {
        private String value;

        public CountryQualifier(String value) {
            this.value = value;
        }

        public String value() {
            return value;
        }
    }
}
@Country("NL")
@ApplicationScoped
public class CarPolicyNetherlandsService implements CarPolicyServiceWithContext<MSFOTContext> {