目錄
問題描述
我在本地基於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也是成功的!
記錄下來,希望幫到更多的人!