当前位置: 首页 > 知识库问答 >
问题:

WELD-001408:默认情况下带有限定符的客户类型的不满意依赖项

云鸿达
2023-03-14

我是Java EE新手。我想测试JSF,因此制作了一个简单的程序,但无法部署它。我收到以下错误消息:

cannot Deploy onlineshop-war
deploy is failing=Error occurred during deployment: Exception while loading the app : CDI deployment failure:WELD-001408: Unsatisfied dependencies for type Customer with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private de.java2enterprise.onlineshop.RegisterController.customer
at de.java2enterprise.onlineshop.RegisterController.customer(RegisterController.java:0)
. Please see server.log for more details.

我的代码如下:Customer.java:

package de.java2enterprise.onlineshop.model;

public class Customer {
    private String email;
    private String password;
}

注册Controller.java:

package de.java2enterprise.onlineshop;

import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import javax.inject.Inject;
import de.java2enterprise.onlineshop.model.*;

@Named
@RequestScoped
public class RegisterController {

    private static final long serialVersionUID = 1L;

    @Inject
    private Customer customer;

    public Customer getCustomer() {
        return customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

    public String persist() {
        return "/index.xhtml";
    }
}

为了编译它,我必须包含CDIAPI。jar作为外部库。有人能帮我吗?提前谢谢大家。

共有3个答案

舒阳州
2023-03-14

我也有同样的问题,但与注释无关。在我的容器(Jboss EAP 6.3)中为bean编制索引时出现了这个问题。我的一个bean无法被索引,因为它使用了Java 8的功能,我在部署时收到了一个小警告:

警告[org.jboss.as.server.deployment]。。。无法索引类。。。JAVAlang.IllegalStateException:未知标记!pos=20 poolCount=133

然后在注入点我得到了错误:

类型的未满足依赖项。。。带限定符@Default

解决方案是更新Java注释索引。下载新版本的jandex(jandex-1.2.3.Final或更新版本),然后将其放入

JBOSS_HOME\modules\system\layers\base\org\JBOSS\jandex\main,然后更新对模块中新文件的引用。xml

注:EAP 6.4。x已经修好了

相温文
2023-03-14

这也是一件好事,以确保你有正确的进口

我有这样的问题,我发现豆子在使用

    javax.faces.view.ViewScoped;
                 ^

而不是

    javax.faces.bean.ViewScoped;
                 ^
窦宏旷
2023-03-14

CDI必须将您的Customer类作为bean来发现。为此,您有两种选择:

>

  • 在上面放一个bean定义注解。因为@Model是一个原型,所以它能起到作用。像@命名这样的限定符不是bean定义注解,这是它不起作用的原因

    通过添加bean,将bean归档中的bean发现模式从默认的“annotated”更改为“all”。jar中的xml文件。

    请记住,@Named只有一个用法:向UI公开bean。其他用法是用于不好的实践或与遗留框架的兼容性。

  •  类似资料: