原因分析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其它相關文章!

推薦閱讀: