我有一个Maven基础Java EE项目:core-project
。
在这个项目中,我使用@Inject
,所有事情都按预期工作。
但是在将此项目作为依赖项导入另一个项目parent-project
后,注入的字段为空。
为什么在将jar文件导入到其他项目后,注入不起作用?
答案 0 :(得分:1)
如果您的字段为空,则表示无法解析匹配的bean。
如果它们在另一个包中,则需要一个文件beans.xml
(可以为空)。
配置CDI应用程序
使用CDI的应用程序必须具有名为beans.xml的文件。该 文件可以完全为空(它的内容仅限于某些限制 情况),但它必须存在。对于Web应用程序, beans.xml文件必须位于WEB-INF目录中。对于EJB模块或 JAR文件,beans.xml文件必须位于META-INF目录中。
因此,请确保beans.xml
和core-project
中有parent-project
。对于Maven:
来自:https://stackoverflow.com/a/13057183/1838233
对于EJB和JAR打包,您应该将beans.xml放入 SRC /主/资源/ META-INF /。对于WAR包装,您应该放置 src / main / webapp / WEB-INF /
中的beans.xml
另一个原因可能是您的Bean使用@Alternative
或@Specializes
进行了注释。在这种情况下,您需要在beans.xml中指定bean作为替代:
<beans ... >
<alternatives>
<class>sample.package.YourAlternativeBean</class>
</alternatives>
</beans>
有关详细信息,请参阅http://docs.oracle.com/javaee/6/tutorial/doc/gjsdf.html。