Dependency injection CDI和HK2不合作

Dependency injection CDI和HK2不合作,dependency-injection,glassfish,java-ee-6,cdi,hk2,Dependency Injection,Glassfish,Java Ee 6,Cdi,Hk2,我不确定我是否理解这两个如何使用@Inject进行注入的确切方式,但我最近开发了一个应用程序,在开发的第一阶段,我使用@Inject of HK2进行依赖注入,并使用抽象绑定器绑定资源,效果很好。然后我想再注入一个值。我需要使用@inject注入一个基本的字符串值,这个值是从一个用@products注释的方法中得到的。但是当我这样做时,我得到了这个错误 org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no objec

我不确定我是否理解这两个如何使用@Inject进行注入的确切方式,但我最近开发了一个应用程序,在开发的第一阶段,我使用@Inject of HK2进行依赖注入,并使用抽象绑定器绑定资源,效果很好。然后我想再注入一个值。我需要使用@inject注入一个基本的字符串值,这个值是从一个用@products注释的方法中得到的。但是当我这样做时,我得到了这个错误

org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at Injectee(requiredType=String
我在很多地方读到,很多人建议CDI和HK2在一起工作时遇到一些问题。我无法解决这个问题

当我在两个不同的独立程序中尝试上述方案时,它们运行良好。但是当我集成它们时,我得到了上面的错误消息

这是我在java的jira中发现的:

我的例子是:

public ClassA{
  @Inject
      ClassBInter b;
  }
我在抽象活页夹中装订了b类

new AbstractBinder(){
        @Override
        protected void configure() {
            //Binding the implementation to the interface
            bind(ClassBImpl.class).to(ClassBInter.class);
          }
   }
这很有效

但当我尝试在同一个系统中向字符串添加@Inject时,它崩溃了,出现了上述异常

  public ClassC{

         @Inject
         String name;
   }
生产者阶级

    public ProducerClass{

      @Produces
      public String getName(){
            return "henry Ford";
       }
     }

通常不支持全面的字符串注入。您可以使用限定符,这将有助于解决问题


您的部署中是否有
beans.xml
文件?

我尝试使用限定符,是的,我有beans.xml,但不知何故我能够解决这个问题。我在stackoverflow中读到,我们应该使HK2与CDI协调工作。两者都可以单独工作,但当我Integrarte HK2对注射抛出不满意的费用例外时,CDI@qualifier and produces解决了该问题您使用的GlassFish版本是什么?