WELD-001408类型的不满意依赖关系...在注入点使用限定符[@Default]

时间:2014-05-09 10:04:26

标签: java deployment jboss dependency-injection weld

在JBoss上部署Java应用程序时遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以这是我的问题:

public interface FWInterface {
   public FWResult process(FWRequest fwRequest, FWResult fwResult,
                           Integer commitRows) throws Exception;
}

...

@Stateless
public class FWHandlerSqrMind extends FWHandlerDefault implements FWInterface {

   public FWResult process(FWRequest fwRequest, FWResult fwResult, Integer commitRows)
                   throws Exception {
                ... some JavaCode here
   }
}

在JBoss 7.1上部署时会出现以下错误:

  

10:05:34,83​​8 ERROR [org.jboss.msc.service.fail](MSC服务主题)   1-6)MSC00001:无法启动服务   。jboss.deployment.unit" MDK-交换1.1.0.war" .WeldService:   服务中的org.jboss.msc.service.StartException   。jboss.deployment.unit" MDK-交换1.1.0.war" .WeldService:   org.jboss.weld.exceptions.DeploymentException:WELD-001408不满意   具有限定符的类型[FWHandlerAufTracking]的依赖项   [@Default]注入点[[field] @Inject   de.mdkbw.exchange.filewatcher.FWMain.fwhAufTracking] at   org.jboss.as.weld.services.WeldService.start(WeldService.java:83)at   org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1811)   [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at   org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1746)   [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at   java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)   [rt.jar:1.7.0_15] at   java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)   [rt.jar:1.7.0_15]在java.lang.Thread.run(未知来源)   [rt.jar:1.7.0_15]引起:   org.jboss.weld.exceptions.DeploymentException:WELD-001408不满意   具有限定符的类型[FWHandlerAufTracking]的依赖项   [@Default]注入点[[field] @Inject   de.mdkbw.exchange.filewatcher.FWMain.fwhAufTracking] at   org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:311)     在   org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:280)     在   org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:143)     在   org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:163)     在   org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:382)     在   org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:367)     在   org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:379)     在org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83)at   org.jboss.as.weld.services.WeldService.start(WeldService.java:76)

如果我删除了实现,一切都还可以。谁能告诉我问题是什么?我太傻了?提前谢谢!

3 个答案:

答案 0 :(得分:8)

你如何注射豆子?那样的吗?

@Inject
private FWHandlerSqrMind handler;

如果是这样,你可以试着像那样注射它:

@Inject
private FWInterface handler;

答案 1 :(得分:6)

您的类路径中是否有META-INF / beans.xml或WEB-INF / beans.xml文件?

答案 2 :(得分:6)

缺少beans.xml是我的问题(WildFly 8.2.0) 只需放置一个简单的beans.xml就可以解决这个问题:

    <?xml version="1.0"?>
    <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd" />