首頁 > 軟體

原因分析IDEA匯入Spring-kafka專案Gradle編譯失敗

2022-02-25 19:00:10

前言

最近在弄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:runtimegradle-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編譯失敗的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com