原因分析IDEA導入Spring-kafka項目Gradle編譯失敗
前言
最近在弄kafka相關的東東,因為是spring boot工程,所以用到瞭Spring-kafka,一個包含瞭kafka-producer和kafka-consumer自動裝配的依賴。為瞭進一步研究spring是如何封裝的kafka官方客戶端的細節,所以從github上拉到瞭源碼準備研究下,在導入到IDEA中時,因為Spring-kafka工程使用的是Gradle,導入時就編譯失敗瞭,導入工程失敗。
Spring-kafka地址:https://github.com/spring-projects/spring-kafka
異常信息
java.lang.AbstractMethodError at org.gradle.api.internal.artifacts.ivyservice.resolutionstrategy.DefaultCachePolicy.mustRefreshModule(DefaultCachePolicy.java:205) at org.gradle.api.internal.artifacts.ivyservice.resolutionstrategy.DefaultCachePolicy.mustRefreshModule(DefaultCachePolicy.java:192) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$LocateInCacheRepositoryAccess.resolveComponentMetaDataFromCache(CachingModuleComponentRepository.java:212) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$LocateInCacheRepositoryAccess.resolveComponentMetaData(CachingModuleComponentRepository.java:185) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve
具體原因
發生這個異常是因為Gradle版本更新導致的,在IDEA的環境下如果不配置本地的Gradle版本,默認會去拉最新的Gradle版本5.x。而5.x很多人反饋有問題,如下github官方issue:
Gradle-issue:https://github.com/gradle/gradle/issues/8088
解決問題
如果說是升級導致的問題,那麼我們降低版本就ok瞭。事實上,截止目前最新的版本是5.4.1,所以我嘗試瞭5.x的幾個低版本都不行,直到降到4.10.2版本的時候才順利的編譯並導入瞭項目。
經測試,在Gradle的4.6版本下會拋如下異常,提示找不到xxx.jar的信息:
Cannot find JAR 'bcprov-jdk15on-1.58.jar' required by module 'gradle-dependency-management' using classpath or distribution directory 'E:\runtime\gradle-4.6'
所以如果你也是編譯Spring-kafka項目,直接選擇4.10.2版本就ok瞭
Gradle下載地址:http://services.gradle.org/distributions/
從上面的地址中找到-bin.zip的包,當然是4.x的版本的。直接解壓到本地目錄,然後打開IDEA的設置,找到如下箭頭所指向的配置
Gradle home選中自己剛解壓的目錄即可,提交後會自動觸發再次編譯
以上就是IDEA導入Spring-kafka項目Gradle編譯失敗原因的詳細內容,更多關於IDEA導入Spring-kafka項目Gradle編譯失敗的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- windows下使用 intellij idea 編譯 kafka 源碼環境
- Java中的Kafka為什麼性能這麼快及4大核心詳析
- Android開發gradle拉取依賴的加速配置
- 教你使用IDEA搭建spring源碼閱讀環境的詳細步驟
- Java分佈式學習之Kafka消息隊列