文章目錄
- 1. 問題簡述
- 2. 解決方法
1. 問題簡述
- 因協定更改的需要,在項目中使用 protobuf 重新編譯更改後的
,生成對應的 Java 類檔案後整編項目時出現錯誤,報錯資訊是無法加載某個類之類的。.proto 檔案
,檢查項目 protobuf 依賴,發現其版本為一般這種情況都是項目 jar 包引入不正确導緻
3.3.1
Protobuf 版本沖突解決1. 問題簡述2. 解決方法 - 使用以下指令檢查本地的 protobuf 版本,發現本地版本為
,顯然 google 在 protobuf 版本疊代過程中肯定進行了較大的修改,高版本的 protobuf 編譯生成的 Java 類檔案中出現了低版本 jar 包中不支援的類3.10.0
protoc --version
2. 解決方法
- 通常可以直接在 build.gradle 檔案中修改 protobuf 的依賴版本,但是該項目中并沒有看到任何顯式聲明 protobuf 依賴的代碼,通過 gradle 編譯依賴分析發現這個包是包含在其他依賴中引入進來的。此時想到的是 在 build.gradle 檔案中重新添加一個高版本的 protobuf 依賴,這種方式編譯沒有問題,但是引入高版本依賴後
出現了jar包沖突,原本未改動的protobuf對應 Java 類檔案在 IDEA 中出現紅色報錯,無法正确導入到其他類中使用
- 無奈之下隻想到一個解決方法,那就是
,使用低版本的 protobuf 重新編譯生成 Java 類檔案。以下為 Mac 環境相關指令,如未安裝 brew 請參考另一篇部落格 Mac 環境 protobuf 安裝重裝本地 protobuf
// 解除安裝本地 protobuf brew uninstall protobuf // 重新搜尋 protobuf 可用版本 brew search protobuf // 安裝指定版本 brew install [email protected]