<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [Mac] 從Windows切換到ARM機器開發-Protobuf 篇

      背景

      使用Mac M4芯片的機器,在IDEA開發Java項目,遇到一部分問題,做一下先行記錄。

      報錯1

      protobuf 插件報錯:protoc:exe:osx-aarch_64:3.12.0 丟失

      [ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.6.1:compile (default-cli) on project grpc: Unable to resolve artifact: Missing:
      [ERROR] ----------
      [ERROR] 1) com.google.protobuf:protoc:exe:osx-aarch_64:3.12.0
      

      已經嘗試過網絡上的辦法:改 os.detected.classifier 則報錯:
      error=86, Bad CPU type in executable

      protobuf-java 在 3.17.x 以后的版本已經支持了ARM芯片架構。因此不需要修改 os.detected.classifier

      建議直接升級 插件內所使用的 protoc 版本。3.x 的最后一個版本是 3.17.6,所以配置相應的插件和庫。

      另外:插件就叫這個名,即便是后綴是 exe,不用安裝 Rosetta。

      slankka@MacMini-M4 protoc-plugins % file protoc-3.25.6-osx-aarch_64.exe 
      protoc-3.25.6-osx-aarch_64.exe: Mach-O 64-bit executable arm64
      
      <plugin>
        <groupId>org.xolstice.maven.plugins</groupId>
        <artifactId>protobuf-maven-plugin</artifactId>
        <version>0.6.1</version>
        <configuration>
          <protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>
          <protocArtifact>
      com.google.protobuf:protoc:3.25.6:exe:${os.detected.classifier}
          </protocArtifact>
        </configuration>
      </plugin>
      

      順便一提:protoc-gen-java-grpc也支持Apple ARM芯片,至少1.43+

      <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.43.0:exe:${os.detected.classifier}</pluginArtifact>
      

      報錯2

      java.lang.NoClassDefFoundError: com/google/protobuf/MapFieldReflectionAccessor

      原因:項目內,存在多個版本的 protobuf-java,間接或者直接包含。

      Google Protobuf相關:

      protobuf-java-3.25.6 是 Protobuf 3.x 的最后一個版本。(截至目前2025.02.12)

      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>3.25.6</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java-util</artifactId>
        <version>3.25.6</version>
      </dependency>
      

      第三方:

      <dependency>
        <groupId>com.hubspot.jackson</groupId>
        <artifactId>jackson-datatype-protobuf</artifactId>
        <version>0.9.17</version>
      </dependency>
      

      問題3

      如果項目涉及大數據,例如訪問 Hadoop 集群的API,遇到這個問題,需要趕緊降級 protobuf 版本,只要服務端Hadoop(Hdfs、Yarn等)用了低版本(Hadoop 至今在使用 Protobuf 2.5.0)

      可參考 apache drill 的 PR(在下方有鏈接),此框架鎖定了 protobuf-java: 3.25.5。

      把 protobuf-java降低至 3.25.5 即可解決。

      Caused by: java.lang.UnsupportedOperationException: As of 2022/09/29 (release 21.7) makeExtensionsImmutable should not be called from protobuf gencode. 
      If you are seeing this message, your gencode is vulnerable to a denial of service attack. You should regenerate your code using protobuf 25.6 or later. 
      Use the latest version that meets your needs. However, if you understand the risks and wish to continue with vulnerable gencode, you can set the system 
      property `-Dcom.google.protobuf.use_unsafe_pre22_gencode` on the command line. See security vulnerability: https://github.com/protocolbuffers/protobuf/s
      ecurity/advisories/GHSA-h4h5-3hr4-j3g2
              at com.google.protobuf.GeneratedMessage.warnPre22Gencode(GeneratedMessage.java:327)
              at com.google.protobuf.GeneratedMessage.makeExtensionsImmutable(GeneratedMessage.java:333)
              at org.apache.hadoop.ipc.protobuf.RpcHeaderProtos$RpcResponseHeaderProto.<init>(RpcHeaderProtos.java:3376)
              at org.apache.hadoop.ipc.protobuf.RpcHeaderProtos$RpcResponseHeaderProto.<init>(RpcHeaderProtos.java:3262)
      

      問題4

      java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/PropertyNamingStrategies$NamingBase
      

      如果使用了 jackson-datatype-protobuf ,則尤其需要注意, protobuf 類序列化為 Jackson 的第三方庫,所引用的 Jackson版本也有會鏈接錯誤:
      注意:jackson-datatype-protobuf 的版本,在0.9.14 還支持 Jackson-2.12 以下的版本,在后續的版本,已經至少需要 jackson-2.12。

      之所以出現這個問題:因為項目中使用了 SpringBoot 全家桶,且版本不容易升級,所以含有 jackson-2.10,不滿足 jackson-datatype-protobuf 新版的要求,真是左右為難。

      <dependency>
        <groupId>com.hubspot.jackson</groupId>
        <artifactId>jackson-datatype-protobuf</artifactId>
        <version>0.9.17</version> <!--0.9.14才能兼容 jackson 2.10 -->
      </dependency>
      

      參考資料

      Github.com grpc-java
      Github.com Apache Drill PR-2977
      Github.com Jackson-datatype-protobuf
      Github.com Grpc-Java

      posted @ 2025-03-18 11:23  一杯半盞  閱讀(360)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久99久国产精品66| 国产福利一区二区三区在线观看| 日韩中文字幕国产精品| 九九热在线观看精品视频| 日韩精品成人一区二区三| 国产精品亚洲二区在线播放| 国产成人午夜福利精品| 国产自在自线午夜精品| 国产综合视频一区二区三区| 成人片黄网站色大片免费毛片| 亚洲av激情一区二区三区| 亚洲av永久无码精品网站| 中文精品无码中文字幕无码专区| 国产精品SM捆绑调教视频| 老色鬼永久精品网站| 国产精品视频午夜福利| 精品无码人妻一区二区三区| 国产成人免费永久在线平台| 亚洲无码精品视频| 香港特级三A毛片免费观看| 亚洲av色综合久久综合| 国产午夜91福利一区二区| 强奷漂亮人妻系列老师| 色欲综合久久中文字幕网| 高清无码在线视频| 国产伦码精品一区二区| 亚洲国产日韩a在线播放| 亚洲福利精品一区二区三区| 一区二区三区精品不卡| 亚洲女同精品久久女同| 国产成人综合欧美精品久久| 高清有码国产一区二区| 99久热在线精品视频| 少妇又爽又刺激视频| 国产午夜精品一区二区三区不卡| 一区二区三区四区黄色片| 亚洲精品免费一二三区| 亚洲午夜性猛春交xxxx| 国产偷国产偷亚洲高清日韩| 狠狠色噜噜狠狠狠狠777米奇| 影音先锋男人站|