JSF - org.jboss.weld.exceptions.DeploymentException:WELD-001408:不满意的类型依赖

问题描述 投票:0回答:1

注:我已经试过因此在类似的问题提供解决方案。

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

org.jboss.weld.exceptions.DeploymentException:WELD-001408:通过引起与限定符类型ContactsDAO不合格依赖@default在注射点[BackedAnnotatedParameter]参数1 [BackedAnnotatedConstructor] @注入公共com.contacts.ContactsController的(ContactsDAO)

当我从ContactsController的构造函数删除@Inject注解,该异常消失,但contactsDao为空,因此我无法得到联系人列表。

contacts controller.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();
        }
    }

}

contacts DAO.Java

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

contacts DAO imp了.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;
    }
}

VEB-INF / beans.hml

<?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>
java jboss jsf-2.2 tomcat9
1个回答
1
投票

Tomcat不支持CDI。从这里请看post @BalusC

© www.soinside.com 2019 - 2024. All rights reserved.