【问题标题】:CDI: beans.xml, where do I put you?CDI:beans.xml,我把你放在哪里?
【发布时间】:2012-10-14 21:55:21
【问题描述】:

我使用 Weld 作为 CDI 实现。当我在src/test/java/META-INF/beans.xml 中有空 beans.xml 时,我的集成测试尝试组装对象图实例化 Weld 容器运行良好。这是一个简单的测试:

public class WeldIntegrationTest {
    @Test
    public void testInjector() {
        new Weld().initialize();
        // shouldn't throw exception
    }
}

现在当我运行mvn clean install 时,我总是得到:Missing beans.xml file in META-INF!

我的根文件夹是“src”和“web”,其中包含 WEB-INF 文件夹,但我也尝试使用默认的 maven 结构并将“web”重命名为“webapp”并将其移至 src/main。我尝试了所有我能想到的合理位置:

 - src/main/java/META-INF/beans.xml
 - src/test/java/META-INF/beans.xml
 - web/WEB-INF/beans.xml
 - src/main/webapp/WEB-INF/beans.xml
 - src/main/webapp/META-INF/beans.xml
 - src/main/webapp/META-INF/(empty) and src/main/webapp/WEB-INF/beans.xml

到目前为止没有任何效果:/

【问题讨论】:

  • 在我的 CDI 项目中 beans.xml 在 src\main\webapp\WEB-INF 中,在我的 war 文件中它也在 WEB-INF 目录中。

标签: java jakarta-ee maven cdi jboss-weld


【解决方案1】:

http://www.javamonamour.org/2017/11/cdi-in-java-se-8.html 在这里您可以看到我成功放置它的位置,即在 src/META-INF 下。该帖子包含 Java SE 中 CDI 的完整工作示例。

【讨论】:

    【解决方案2】:

    为了补充上面的答案,这里有一个官方参考: https://docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

    引用:

    使用 CDI 的应用程序必须有一个名为 beans.xml 的文件。该文件可以是完全空的(它仅在某些有限的情况下具有内容),但它必须存在。对于 Web 应用程序,beans.xml 文件必须位于 WEB-INF 目录中。对于 EJB 模块或 JAR 文件,beans.xml 文件必须位于 META-INF 目录中。

    【讨论】:

    【解决方案3】:

    对于 EJB 和 JAR 打包,您应该将 beans.xml 放在 src/main/resources/META-INF/ 中。

    对于 WAR 打包,您应该将 beans.xml 放在 src/main/webapp/WEB-INF/ 中。

    请记住,只有.java 文件应该放在src/main/javasrc/test/java 目录中。 .xml 文件之类的资源应该在 src/main/resources 中。

    【讨论】:

    • 在我的情况下,我正在测试 cdi-unit(使用 Weld)我必须把它放在我的 src 中
    • @dalvarezmartinez1 我打赌你可以将 beans.xml 移动到 /src/main/resources ;它应该在构建后出现在“类”文件夹中
    • @JonOnstott 你是对的。实际上现在它在 src/main/webapp/WEB-INF 但这只是因为我们使用的是 gradle,war 插件默认情况下希望它在这个位置。我想说这完全取决于打包战争/罐子的工具。
    • 对我来说是否jar or war 我不得不把它放在/src/main/resources/WEB-INF 中。总之谢谢
    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 2012-11-25
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2015-12-12
    相关资源
    最近更新 更多