java如何检查是否启用了CDI?
如何检查当前环境(SE或EE)中是否启用了CDI?如果启用, CDI应该用于实例化类(例如Foo),否则使用new Foo() 如何实施java如何检查是否启用了CDI?,java,dependency-injection,cdi,Java,Dependency Injection,Cdi,如何检查当前环境(SE或EE)中是否启用了CDI?如果启用, CDI应该用于实例化类(例如Foo),否则使用new Foo() 如何实施 private boolean isCDIEnabled() { // how? } 如果类路径中有cdi api,请尝试以下操作: try{ CDI.current(); }catch(IllegalStateException e){ // no cdi available } 检
private boolean isCDIEnabled() {
// how?
}
如果类路径中有cdi api,请尝试以下操作:
try{
CDI.current();
}catch(IllegalStateException e){
// no cdi available
}
检查
cdiContainer
是否为null
?否。不知道如何获取CDI容器。这是问题的背景?您的代码可以在CDI和非CDI环境中执行?是的。CDI和非CDI。所以需要检查CDI是否支持SE环境中的这项工作?CDI在SE中不可用,对吗?什么是编译依赖项?如果您的SE环境包含CDIAPI jar,则可以使用。依赖项的链接:。附言:我粘贴了1.2版。检查您正在使用的版本。正在编译。但是添加:runtimeOnly组:'org.jboss.weld',名称:'weld core',版本:'2.4.8.Final',仍然得到java.lang.IllegalStateException:无法访问CDI。什么是正确的CDI提供程序impl?线程“main”java.lang.IllegalStateException中的异常:无法访问javax.enterprise.inject.spi.CDI.lambda$getCDIProvider$1(CDI.java:88)处的java.util.Optional.OrelsTorn(Optional.java:290)处的javax.enterprise.inject.spi.CDI.getCDIProvider(CDI.java:88)在javax.enterprise.inject.spi.CDI.current(CDI.java:64)中,当CDI不可用时,将抛出illegalstateexception。
try{
CDI.current();
}catch(IllegalStateException e){
// no cdi available
}