系统环境:
macOS 版本 Big Sur 11.4
Intellig IDEA 版本 2021.1
DataGrip 版本 2021.1.3
Parallels Desktop 版本 16.1.2 (49151)
CentOS 版本 7
Docker 版本 20.10.7
MySql 版本 5.7
Spring Boot 版本 2.5.1
Spring Cloud 版本 2020.0.3
Spring Cloud Alibaba 版本 2.2.5.RELEASE
Nacos 版本 2.0.2
项目地址:GitHub gulimall-IamXGW
DataGrip 错误:java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost
分析:
发生这个错误的时候都是在我重开电脑以后,所以我就想重启一下虚拟机。
解决方法:
在虚拟机终端输入 reboot
命令重启虚拟机,然后在 Docker 中打开 MySql 即可。
sudo docker update redis --restart=always
这个命令是设置 MySql 开机自启。
另外,如果数据库平时能连上,但是突然不知道咋回事就连不上了。如果遇见这种情况,请检查一下你的梯子是不是开的全局连接,如果是的话,请换掉。
Mac 使用 nacos 启动不起来
解决方法:
Mac 启动 nacos 失败 日志报“nohup: /Library/Internet: No such file or directory”
Failed to parse configuration class
运行时报如下错误:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.iamxgw.gulimall.coupon.GulimallCouponApplication]; nested exception is java.io.FileNotFoundException: class path resource [com/iamxgw/gulimall/coupon/service/HomeAdvService.class] cannot be opened because it does not exist
分析:
提示 HomeAdvService.class
文件找不到。 *.class
文件应该是编译时产生的,所以直接删掉以前的 *.class
重新编译即可。
解决方法:
将 coupon
的 target
文件夹删除,重新运生成即可。
遗留问题:
为什么不删除 target
文件夹,直接运行项目不会生成缺失的 HomeAdvService.class
文件呢?
Did you forget to include spring-cloud-starter-loadbalancer?
分析:
你忘记 include spring-cloud-starter-loadbalancer 了么?
那就 include 进去。
解决方法:
在 common 的 pom.xml 中,加入依赖:
<dependency> |
使用 Nacos 时,bootstrap.properties
配置文件无效
分析:
一开始在 application.propertie
中设置 name
和 age
,是可以正常访问到的。
但是使用 Nacos 作为配置中心却无法获取到配置中心的 name
和 age
,而且控制台也没有同老师一样打印 located proper source
,所以我怀疑是 bootstrap.properties
这个配置文件没起作用。
解决方法:
在 common 的 pom.xml 中加入依赖:
<dependency> |
Parameter 1 of constructor in com.baomidou.mybatisplus.autoconfigure.IdentifierGeneratorAutoConfiguration$InetUtilsAutoConfig required a bean of type ‘com.baomidou.mybatisplus.autoconfigure……..
解决方法:
如果跟老师一样,在 Java 文件中加注解 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
是报错的。于是修改 gateway 的 pom.xml 文件,来排除不需要的依赖:
<dependency> |
注意这个 <exclusions>
是新加入的。
java: You aren’t using a compiler supported by lombok, so lombok will not work and has been disabled
解决方法:
这个问题是 Lombok 版本的问题。在 renren-fast 的 pom.xml 中修改 Lombok 版本:
<dependency> |
如果不知道这个 Lombok 版本在哪里修改,可以使用全局搜索 Lombok。
网关 Gateway 配置 filters
重写路径 RewritePath
出问题
解决方法:
一定要根据 Gateway 的版本来查看对应的官方文档,然后按照官方文档做修改。
我是 3.0.3
版本的 Gateway RewritePath(而且 renren-fast
前面也要加个 /
):
- RewritePath=/api/?(?<segment>.*), /renren-fast/$\{segment}
PS:其实不一定非要和老师的版本严格一致,你可以使用其他的版本。但重要的是,你要能自己分析出发生问题的原因是,然后逐个击破。我认为这才是真正学到了东西。