错误码:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nacosProperties' defined in class path resource [com/alibaba/cloud/nacos/discovery/NacosDiscoveryAutoConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.alibaba.cloud.nacos.NacosDiscoveryProperties] from ClassLoader [sun.misc.Launcher$AppClassLoader@18b4aac2]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:571)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at com.atguigu.guli.service.oss.ServiceOssApplication.main(ServiceOssApplication.java:19)
被nacos一个错误耽误了一天,很难受。错误类似于nacos在一个包中的某一个类找不到了,这个类我在实际测试的过程中出现好几次不同的类,都是nacos中的一个类。
但是我有一个完整的Maven下的nacos的包,没有网络错误。我就很奇怪,怎么会找不到呢?
主要错误如下:
.BeanCreationException: Error creating bean with name 'nacosProperties' defined in class path resource [com/alibaba/cloud//discovery/NacosDiscoveryAutoConfiguration.class]
这个类我明明就有,但是项目还是报错,启动不起来。
最后发现,这应该是nacos的一个bug。如果你把nacos的包放在c盘Maven仓库默认的地址下,就不会报错。(我们一般会把Maven仓库自定义到其他盘,防止c盘过大)
我还做了个实验,c盘和E盘的所有包都是一样的,在c盘就是正常的,其他盘就报错。
做以上写的前提是要配置好nacos配置,下面是基础配置,大佬可以跳过。
下载版本:nacos-server-1.1.4.zip 或 nacos-server-1.1.4.tar.gz,解压任意目录即可
- Windows
启动:双击bin/startup.cmd运行文件
访问:http://localhost:8848/nacos
用户名密码:nacos/nacos
- Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式)
启动命令:sh startup.sh -m standalone
1、引入依赖
service模块中配置Nacos客户端的pom依赖(我已经在父工程中定义的版本号,所以这里就不定义了,版本:<version>2.2.0.RELEASEE</version>)
<!--服务注册-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、添加服务配置信息
edu和oss微服务配置application.properties,在客户端微服务中添加注册Nacos服务的配置信息
#spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848 # nacos服务地址
3、添加Nacos客户端注解
启动类中添加注解
@EnableDiscoveryClient
4、启动客户端微服务
启动注册中心,启动已注册的微服务,可以在Nacos服务列表中看到被注册的微服务