Weld 在库 jar 中找不到 CDI 生成器方法

Abh*_*kar 2 cdi weld

使用 Wildfly 8.2.0.Final(我相信它使用 Weld 2.2),我在 Maven 多模块项目中使用 2 个简单的类重现了这个问题。一个产生一个javax.ws.rs.client.Client,另一个有一个相同的注入点。Arquillian 部署失败,原因是WELD-001408:依赖关系不满足。生产者位于一个库 jar 中,该库 jar 包含在WEB-INF/lib消费者的库中。生产者有一个beans.xmlin the META-INFwith discovery-mode=annotation,消费者也有一个 in WEB-INFwith discovery-mode=all

重现步骤:下载该项目mvn clean install并从根目录运行。

这是一个严重的错误。还有一些其他关于 Weld 不满足依赖关系的帖子,但大多数都是因为beans.xml缺少 a 。对于 CDI 1.2,beans.xml它是可选的,尽管我的示例确实有几个。有任何想法吗?

全面披露:也发布在 Weld 论坛255328

Abh*_*kar 5

经过几天的尝试在另一个项目中重现该问题,但徒劳无功,我将原始项目简化为 CDI 生产者和使用者,并将代码发布在 JBoss 论坛中,并打开了 JIRA WELD -1921。Martin Kouba 发现问题是由于使用了错误的Produces注释造成的!相反javax.enterprise.inject.Produces,我有javax.ws.rs.Produces。这显然不是故意的,而且一定是在我在 Eclipse 中自动导入包并不知何故选择了错误的包时发生的!还有一些其他问题,但没有什么是我自己解决不了的。非常感谢马丁。