java - JSF-org.jboss.weld.exceptions.DeploymentException:WELD-001408:类型的依赖关系未满足

标签 java jboss jsf-2.2 tomcat9

注意:我已经尝试过类似问题的可用解决方案。

我正在使用JSF,Java 8,Tomcat 9,Maven,H2 db开发一个简单的CRUD应用程序。
当我尝试启动服务器时,发生以下异常


  由以下原因引起:org.jboss.weld.exceptions.DeploymentException:WELD-001408:
  不带限定符@Default的ContactsDAO类型的依赖关系
  在注入点[BackedAnnotatedParameter]的参数1
  [BackedAnnotatedConstructor] @Inject公共
  com.contacts.ContactsController(ContactsDAO)


当我从ContactsController的构造函数中删除@Inject批注时,异常消失了,但是contactsDao为空,因此我无法获取联系人列表。

ContactsController.java

import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
@Named("contactsController")
@SessionScoped
public class ContactsController implements Serializable {
public ContactsController() {
    }

    @Inject
    public ContactsController(ContactsDAO contactDAO) {
        this.contactDAO = contactDAO;
    }
@PostConstruct
    public void init() {

        logger.info("retrieving list of contacts");

        try {
            if(contactDAO != null) {
                System.out.println("ifff");
                contacts = contactDAO.getAllContacts();
            }
            else {
                System.out.println("Contacts DAO null");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


}

联系人DAO.java

public interface ContactsDAO {
List<Contact> getAllContacts() throws SQLException;
}


联系人DAOImpl.java

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;

@Named
@ApplicationScoped
public class ContactsDAOImpl implements ContactsDAO, Serializable{
@Override
    public List<Contact> getAllContacts() throws SQLException {
        List<Contact> contacts = new ArrayList<>();
        try {
            String sql = "SELECT * FROM contacts";
            connect();

            PreparedStatement pstmt = jdbcConnection.prepareStatement(sql);

            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                Contact newContact = new Contact(); 
                newContact.setId(rs.getInt("id"));

                contacts.add(newContact);
            }
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
        return contacts;
    }
}


WEB-INF / beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode="annotated">
</beans>

最佳答案

Tomcat不支持CDI。看看@BalusC的post

关于java - JSF-org.jboss.weld.exceptions.DeploymentException:WELD-001408:类型的依赖关系未满足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54577051/

相关文章:

angularjs - 使用本地绝对路径读取/下载文件

jsf - 重定向如果 f :viewParam is empty

ajax - f :ajax in ui:repeat renders h:outputText but fails to render/update h:inputText

java - 为什么 LinkedList 不暴露它的 Node 类?

java - 在当前帧之前存储视频帧?

java - 将 float 据发送到我的客户端应用程序

php - jquery + PHP、GWT 或 jquery + JSP

java - 在Elasticsearch查询结果中隐藏一些数组元素

java - Wildfly 中 2 个不同模块的 REST 路径相同

java - JSF 2.2 java.lang.IllegalStateException : Cannot create a session after the response has been committed