Program type already present lambda表達式異常處理

這個編譯異常經常會出現(xiàn),一般請款下是因為某一個類或者support包重復導入多次引起,常規(guī)的解決辦法,使用 " ./gradlew -q app:dependencies" 使用這個命令查看項目中的各個module所依賴的第三方工程,然后在你的APP module下找到你導入第三方依賴的位置,并使用exclude group "xxx.xxx.xxx" 操作就可以解決項目依賴重復導入的問題。

這里描述一個我這遇到的坑比較深的場景

前置條件

  • 項目支持kotlin;
  • 導入的第三方或自己開發(fā)的lib庫內含有kotlin文件;
  • 本地項目的 kotlin-stdlib-jkd7, kotlin-stdlib-jdk8 等lib庫均包含,
    如下圖
534DC0C4-E190-46D1-A78E-21159E90B8FE.png

編譯后出現(xiàn)的錯誤:
Program type already present $$xx$ lambda
項目直接減錯誤指示到 kotlin文件中的lambda 表達式

接下來你可能會返回檢查、重寫、或者切換自己lambda 表達式的寫法或者直接不使用lambda表達式,但是編譯的錯誤依舊顯示這個bug;

問題的根本原因:org.jetbrains.kotlin:kotlin-stdlib-jkd7,
org.jetbrains.kotlin:kotlin-stdlib-jkd8 這兩個kotlin-stdlib 在項目中出現(xiàn)了版本不統(tǒng)一,
修復建議: kotlin-stdlib-jkd7,kotlin-stdlib-jkd8 這兩個版本只保留一個版本, 且需要使用 exclude group 命令主動刪除第三方包中導入的
kotlin-stdlib-jkd7(8),避免第三方主動帶入了kotlin-std-lib庫造成項目的kotlin-stdlib-jkd的版本不統(tǒng)一。

如果經過上述步驟還無法修復,可以刪除工程下的build, app.build這兩個文件目錄進行再次編譯


image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容