springboot+duboo Initialization of bean failed; nested exception is java.lang.IllegalStateException
问题描述:在dubbo中,启动springboot,启动出错。出错描述为:Initialization of bean failed; nested exception is java.lang.IllegalStateException具体描述为:org.springframework.beans.factory.BeanCreationException: Error creating bea
·
问题描述:
在dubbo中,启动springboot,启动出错。出错描述为:
Initialization of bean failed; nested exception is java.lang.IllegalStateException
具体描述为:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.dubbo.spring.boot.autoconfigure.DubboAutoConfiguration': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Failed to create adaptive instance: java.lang.IllegalStateException: Can't create adaptive extension interface org.apache.dubbo.common.extension.ExtensionFactory, cause: Extension instance (name: adaptive, class: interface org.apache.dubbo.common.extension.ExtensionFactory) couldn't be instantiated: Could not initialize class com.alibaba.dubbo.common.logger.LoggerFactory
看了各种类型的文章之后,有很多种解释,我都试过解决不成功。
问题分析:
最后我发现:出错的原因是在serviceImpl层中的注解有问题。
由于maven仓库中我们添加dubbo的springboot依赖为
<!--添加dubbo的springboot依赖-->
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
之后我们会在serviceImpl层中通过导入dubbo的@Service注解
import org.apache.dubbo.config.annotation.Service;
//声明这是一个dubbo服务
@Service(version = "1.0.0")
我们会发现@Service被划掉。

最后我们就会报上述的错误。
解决方案:

<!--添加dubbo的springboot依赖-->
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
在这个pom.xml文中dubbo对springboot的依赖修改为:
<!--添加dubbo的springboot依赖-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
修改完成后,一定要在idea右方重新刷新一下依赖。
之后在ServiceImpl层,将Service的导入换成
import com.alibaba.dubbo.config.annotation.Service;
这个就算改了pom文件也不会自动导入,需要手动导入。
这样就能解决上述问题。开启启动类即可。
附属我的代码
itcast-dubbo-service的pom.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>itcast-dubbo</artifactId>
<groupId>cn.itcast.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>itcast-dubbo-service</artifactId>
<dependencies>
<!-- 添加springboot依赖,非web项目 -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>
<!-- 以下两个依赖必须要有,要不然不能将服务的提供者连接到我们的zookeeper的注册中心 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
</project>
itcast-dubbo的代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--添加SpringBoot parent支持-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
<groupId>cn.itcast.dubbo</groupId>
<artifactId>itcast-dubbo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>itcast-dubbo-service</module>
</modules>
<dependencies>
<!--添加SpringBoot测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--添加dubbo的springboot依赖-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!--添加dubbo依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--添加springboot的maven插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
其余的就靠自己咯。
更多推荐




所有评论(0)