Java使用ProtoBuffer3時報錯: Cannot resolve method 'isStringEmpty' in 'GeneratedMessageV3'

錯誤描述

我的機器是Mac M1,項目中使用了ProtoBuffer 3。使用protoc程序,根據proto文件生成了Java代碼。在編譯Java項目的時候,報錯:cannot resolve method 'isstringempty' in 'generatedmessagev3'。

錯誤原因

根本原因是系統的protoc程序版本和Java項目依賴的probuf-java依賴的版本不一致造成的。
查看protoc版本:

protoc --version

protoc程序版本是3.21.2

在Java項目的Project-External Libraries, 可以看到自己的依賴版本。

依賴版本是3.11.4

解決辦法

在對應項目模塊的pom.xml中,導入和系統protoc程序相同版本的依賴即可。

   <dependencies>
       <!-- protoc編譯 -->
       <dependency>
           <groupId>com.google.protobuf</groupId>
           <artifactId>protobuf-java</artifactId>
           <version>3.21.2</version>
       </dependency>
       <dependency>
           <groupId>com.google.protobuf</groupId>
           <artifactId>protobuf-java-util</artifactId>
           <version>3.21.2</version>
       </dependency>
   </dependencies>

參考

  1. https://github.com/protocolbuffers/protobuf/issues/9236
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章