【问题标题】:Weld cannot find CDI producer method in library jarWeld 在库 jar 中找不到 CDI 生产者方法
【发布时间】:2015-04-13 01:13:46
【问题描述】:

使用 Wildfly 8.2.0.Final,我相信它使用 Weld 2.2,我在一个 Maven 多模块项目中用 2 个简单的类重现了这个问题。一个产生javax.ws.rs.client.Client,另一个有一个相同的注入点。 Arquillian 部署失败,WELD-001408: unsatisfied dependencies。 生产者位于一个库 jar 中,该库包含在消费者的 WEB-INF/lib 中。生产者在META-INFdiscovery-mode=annotation 中有一个beans.xml,消费者在WEB-INFdiscovery-mode=all 中有一个。

重现步骤: 下载this project,在根目录下运行mvn clean install

这是一个严重的错误。有一些 other SO 帖子关于 Weld 不满足的依赖关系,但其中大部分是因为缺少 beans.xml。对于 CDI 1.2,beans.xml 是可选的,尽管我的示例确实有一对。有什么想法吗?

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

【问题讨论】:

  • 我无法重现您的场景。我让消费者​​正确地获得了注入的客户端。另外,刚刚打印出注入的类型为:org.jboss.resteasy.client.jaxrs.ResteasyClient@6d13d9f7
  • @maress 演示项目有一个错误,我已修复,现在可以运行了。但是,有这个问题的真实项目仍然被打破。我正在尝试找出差异,如果有的话。
  • @maress 请在下面查看我的回答。

标签: cdi weld


【解决方案1】:

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

【讨论】:

  • 我也遇到过同样的事情。绝对容易做到!
  • 这件事一直发生在我身上……
猜你喜欢
  • 2017-08-04
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 2018-08-18
  • 2011-11-20
  • 1970-01-01
  • 2015-08-12
  • 2019-06-16
相关资源
最近更新 更多