Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java如何检查是否启用了CDI?_Java_Dependency Injection_Cdi - Fatal编程技术网

java如何检查是否启用了CDI?

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 } 检

如何检查当前环境(SE或EE)中是否启用了CDI?如果启用, CDI应该用于实例化类(例如Foo),否则使用new Foo()

如何实施

 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 
    }