[英]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.