簡體   English   中英

CDI:beans.xml,我在哪里放你?

[英]CDI: beans.xml, where do I put you?

我使用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

到目前為止沒有任何作用:/

對於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

為了補充上述答案,以下是對此的官方參考: https//docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

引用:

使用CDI的應用程序必須具有名為beans.xml的文件。 該文件可以完全為空(它僅在某些有限的情況下具有內容),但必須存在。 對於Web應用程序,beans.xml文件必須位於WEB-INF目錄中。 對於EJB模塊或JAR文件,beans.xml文件必須位於META-INF目錄中。

http://www.javamonamour.org/2017/11/cdi-in-java-se-8.html在這里你可以看到我把它成功放在哪里,就是在src / META-INF下。 該帖子包含Java SE中CDI的完整工作示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM