升级Spring Cloud Eureka至Finchley.M9后遇ClassNotFoundException,求pom.xml调整方案
解决Spring Cloud Eureka升级后
EnvironmentChangeEvent找不到的异常 我最近把Spring Cloud Eureka从Dalston.SR5版本升级到了Finchley.M9版本,同时把依赖从spring-cloud-starter-eureka-server换成了spring-cloud-netflix-eureka-server。结果重启Eureka实例后,碰到了org.springframework.cloud.context.environment.EnvironmentChangeEvent类找不到的ClassNotFoundException异常,堆栈信息如下:
2018-03-27 02:48:36.278 ERROR o.s.boot.SpringApplication.reportFailure[833] - App...
问题分析与修复方案
这个问题我升级的时候也碰到过,本质是Finchley版本的Spring Cloud重构了依赖模块:EnvironmentChangeEvent类所在的spring-cloud-context模块,不再被spring-cloud-netflix-eureka-server默认引入,所以才会抛出类找不到的异常。给你几个靠谱的解决步骤:
- 手动添加
spring-cloud-context依赖:直接在pom.xml中引入这个依赖,版本会自动和你的Finchley.M9版本对齐,无需额外指定版本号:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </dependency>
- 校验Spring Boot版本兼容性:Finchley.M9对应的Spring Boot版本是2.0.0.RELEASE,一定要确认你的项目中Spring Boot版本和这个匹配,版本不兼容很容易引发各种依赖连锁问题。
- 清理Maven缓存并重新构建:有时候本地Maven缓存的依赖可能损坏或不完整,执行
mvn clean install -U命令强制更新依赖,之后再重启Eureka服务。
另外提个小建议:Finchley.M9是里程碑版本,稳定性不如正式RELEASE版,如果条件允许,建议直接升级到Finchley.RELEASE版本,能避免不少这类小问题。
内容的提问来源于stack exchange,提问作者James Yu
相关产品推荐
相关产品推荐

