目录
问题描述
我在本地基于sentinel实现限流降级功能创建了两个应用,在加了这个依赖:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>spring-boot-starter-ahas-sentinel-client</artifactId>
<version>1.2.1</version>
</dependency>
后使用maven打jar包时报错,如下:
java.lang.NoClassDefFoundError: com/alibaba/csp/sentinel/spi/ServiceLoaderUtil
ERROR: AHAS init fail, ahas.license is needed
java.util.ServiceConfigurationError: com.alibaba.csp.sentinel.transport.HeartbeatSender: Provider com.alibaba.csp.sentinel.transport.heartbeat.SimpleHttpHeartbeatSender could not be instantiated
首先别被报错中的ahas.license is needed所迷惑(ahas是应用高可用服务中心)。
报错如图:
因为我想在EDAS上部署这个应用并实现限流与降级,前面打包有报错但是最后还是生成了jar包,结果试了下不出所料,访问没有成功,接口不正常:
问题解决
sentinel应用部署至阿里云EDAS时,需要给项目pom文件中加如下依赖(官方所述):
但是他们这个内容已经不合时宜了,是不对的。经过一番折腾,正确的依赖如下:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>spring-boot-starter-ahas-sentinel-client</artifactId>
<version>1.4.0</version>
</dependency>
这样你打包成功,部署到EDAS也是成功的!
记录下来,希望帮到更多的人!