【发布时间】:2011-06-22 07:52:51
【问题描述】:
在 Glassfish 3.1 上部署时,我在战争中使用的库中使用依赖注入(使用 CDI/Weld)时遇到问题。我有两个库,比如说:
WEB-INF/lib/library1.jar
WEB-INF/lib/library2.jar
library1 包含一个公共类,例如“InjectMe”。 Library2 包含另一个公共类,例如“InjectionTarget”,其注入站点如“@Inject public InjectMe injectMe;” .
部署失败:
WELD-001408 Unsatisfied dependencies for type [InjectMe] with qualifiers [@Default] at injection point [[field] @Inject packagename.InjectionTarget.injectionSite].
这两个档案都是带有 META-INF/beans.xml 的有效 CDI 档案。
我已经在 Glassfish 3.1 中更新了weld-osgi-bundle.jar,但问题仍然存在。
如果我手动解压 library1 和 library2,将它们的类直接放入 WEB-INF/classes,部署成功并且注入按预期工作。
这让我快疯了。我即将重组我的模块,以便使用 maven-dependency-plugin 解压缩 jar 子包并归档为合并的 jar,然后我将依赖于我的战争。不过,这很可怕。
想法?这不应该“正常工作”吗?
【问题讨论】:
-
顺便说一句,它似乎在 Glassfish 3.2b6 上正常工作,所以这可能只是(又一个)Glassfish CDI/Weld 错误。
标签: jakarta-ee glassfish java-ee-6 cdi