我有一个实用程序jar,它有一个记录器生成器,我正在使用Arquillian进行另一个项目测试。在项目中,我有一个@Inject Logger logger
的课程。当我使用Arquillian运行测试时,我收到错误消息org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type Logger with qualifiers @Default
at injection point
。我之前已成功使用当前项目的生产者来生成一个logger bean,但这是我第一次尝试使用另一个jar(或依赖项)的生产者。所以,我想知道生产者是否必须在同一个项目中,或者他们可以在其他罐子里。提前谢谢。
答案 0 :(得分:2)
我认为看到问题 - 这对Arquillian来说没有错。
显式jar 包含beans.xml文件,该文件可以为空,或者不包含版本号,或者包含版本号1.1且bean-discovery-mode属性设置为all。如:
对于JavaEE7
<?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"
version="1.1" bean-discovery-mode="all">
</beans>
CDI不会管理和注入那些带注释的bean @Voted
另一个是隐式bean归档,它包含一些使用作用域类型注释的bean,不包含beans.xml文件或包含beans.xml发现模式属性设置为的beans.xml文件注释
CDI只能管理和注入带有范围类型的bean注释 隐式存档。
参考Java教程