jakarta-ee - Glassfish:Weld 不会从一个 jar 中的类注入(inject)到 WEB-INF/lib 中相邻 jar 中的类

标签 jakarta-ee glassfish java-ee-6 cdi

在 Glassfish 3.1 上部署时,我在 war 中使用的库中使用依赖注入(inject)(使用 CDI/Weld)时遇到问题。我有两个图书馆,说:

WEB-INF/lib/library1.jar
WEB-INF/lib/library2.jar

library1 包含一个公共(public)类,例如“InjectMe”。 Library2 包含另一个公共(public)类,例如“InjectionTarget”,其注入(inject)站点如“@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,部署成功并且注入(inject)按预期工作。

这正在迅速让我完全发疯。我即将重组我的模块,以便使用 maven-dependency-plugin 解压缩 jar 子包并归档为合并的 jar,然后我将依赖于我的 war 。不过,这很可怕。

想法?这不应该“正常工作”吗?

最佳答案

也许你遇到了这个错误?

https://issues.jboss.org/browse/WELD-846

http://java.net/jira/browse/GLASSFISH-15721

http://java.net/jira/browse/GLASSFISH-15735

我认为 Glassfish 3.1.1-b04 和更新版本使用 Weld 1.1.1.Final,它被标记为底层 Weld 错误的修复版本。使用该确切版本进行测试可能足以确认它。

关于jakarta-ee - Glassfish:Weld 不会从一个 jar 中的类注入(inject)到 WEB-INF/lib 中相邻 jar 中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436630/

相关文章:

jsf - 在 Glassfish v3 中使用 JNDI 配置/查找为 JavaServer Faces 设置项目阶段

java - 观察特定类型的事件

gradle - kumuluzee:没有主要表现

java - 无法加载 EJB 模块

java - 如何将实时变化的数据获取到本地服务器?

Eclipse:Glassfish 和 Tomcat 不工作

java - JBOSS 5_1_0 GA 是否支持在 WAR 中打包 EJB?

java - JAXB "nor any of its super class is known to this context"避免@XmlSeeAlso

java - 恢复上一个 session 的属性

java - 在 Java 中自动重新加载更改的文件