Protobuf 版本冲突解决

1. 问题简述

  1. 因协议更改的需要,在项目中使用 protobuf 重新编译更改后的.proto 文件,生成对应的 Java 类文件后整编项目时出现错误,报错信息是无法加载某个类之类的。一般这种情况都是项目 jar 包引入不正确导致,检查项目 protobuf 依赖,发现其版本为3.3.1

    在这里插入图片描述

  2. 使用以下命令检查本地的 protobuf 版本,发现本地版本为 3.10.0,显然 google 在 protobuf 版本迭代过程中肯定进行了较大的修改,高版本的 protobuf 编译生成的 Java 类文件中出现了低版本 jar 包中不支持的类

    protoc --version
    

2. 解决方法

  1. 通常可以直接在 build.gradle 文件中修改 protobuf 的依赖版本,但是该项目中并没有看到任何显式声明 protobuf 依赖的代码,通过 gradle 编译依赖分析发现这个包是包含在其他依赖中引入进来的。此时想到的是 在 build.gradle 文件中重新添加一个高版本的 protobuf 依赖,这种方式编译没有问题,但是引入高版本依赖后出现了jar包冲突,原本未改动的protobuf对应 Java 类文件在 IDEA 中出现红色报错,无法正确导入到其他类中使用

  2. 无奈之下只想到一个解决方法,那就是重装本地 protobuf,使用低版本的 protobuf 重新编译生成 Java 类文件。以下为 Mac 环境相关命令,如未安装 brew 请参考另一篇博客 Mac 环境 protobuf 安装

    // 卸载本地 protobuf
    brew uninstall protobuf
    
    // 重新搜索 protobuf 可用版本
    brew search protobuf
    
    // 安装指定版本
    brew install protobuf@3.6
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值