[英]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/java
和src/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.