Mac下protobuf生成文件报错问题解决办法,windows下就不会这么麻烦了,如果linux下出现类似报错信息按照下面的解决逻辑依然适用。

1、由--go_out引发的报错

1.报错信息:

user@C02FP58GML7H pbfile % protoc --go_out=./ ./user.proto
protoc-gen-go: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--go_out: protoc-gen-go: Plugin failed with status code 1.

2.解决办法:

  1. 找到protoc-gen-go 文件,复制文件到/usr/local/bin/目录下,该文件通过go get安装时会默认安装在$GOPATH/go/bin目录下,博主本人的安装路径/Users/user/go/bin

    执行复制命令:cp protoc-gen-go /usr/local/bin/
  2. 修改环境变量配置:vim ~/.bash_profile

    添加:export GOPATH=$HOME/go PATH=$PATH:$GOPATH/bin

    刷新环境变量:source ~/.bash_profile

3.结果示例:

user@C02FP58GML7H bin % vim ~/.bash_profile
user@C02FP58GML7H bin % source ~/.bash_profile

2、由--go-grpc_out和protoc-gen-go-grpc引发的报错

1.按照官方命令生成文件:

# product.proto是博主本人的文件,执行的时候需要修
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative product.proto

2.报错信息如下:

user@C02FP58GML7H pbfile % protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative product.proto
protoc-gen-go-grpc: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.

3.重新安装一下:

# 旧版本下载方式(此示例是根据旧版本下载来解决得,如果操作之后依然报错就直接使用新版本下载方式)
sudo go get -u google.golang.org/protobuf/cmd/protoc-gen-go
sudo go get -u google.golang.org/grpc/cmd/protoc-gen-go-grpc
# 新版本下载方式
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2

4.将protoc-gen-go和protoc-gen-go-grpc复制到/usr/local/bin/目录下

使用go env查看GOPATH的路径,默认安装在这个文件夹下的bin文件夹中

  • 切换目录:cd /Users/user/go/bin(博主的所在位置)
  • 复制:cp protoc-gen-go /usr/local/bin/
  • 复制:cp protoc-gen-go-grpc /usr/local/bin/

5.检查/添加环境变量

使用命令cat ~/.bash_profile查看环境变量中是否存在:export PATH=/usr/local/go/bin

存在 刷新一下环境变量配置:source ~/.bash_profile

不存在 使用vim添加:export PATH=/usr/local/go/bin

刷新一下环境变量配置:source ~/.bash_profile

6.执行protoc命令生成文件即可

product.proto是声明文件

生成文件命令:protoc --go_out=./ ./product.proto

生成rpc文件命令:protoc --go_out=./ --go-grpc_out=./ product.proto

Protobuf生成文件报错的更多相关文章

  1. 在请求中使用XML Publisher生成文件报错

    在页面上使用按钮生成该文件不报错,但是使用请求就报错. 错误内容如下 Error : No corresponding LOB data found :SELECT L.FILE_DATA FILE_ ...

  2. JMeter 报告监听器导入.jtl结果文件报错解决方案

    JMeter 报告监听器导入.jtl结果文件报错解决方案   by:授客 QQ:1033553122   1. 问题描述 把jmeter压测时生成的 .jtl结果文件导入监听器报告中,弹出如下错误提示 ...

  3. unity3d MonoDevelop引用外部自定义dll文件报错:are you missing an assembly reference?

    在unity3d 编辑器 MonoDevelop 中引用外部自定义dll文件报错:are you missing an assembly reference? 因为unity还停留在.NET Fram ...

  4. R文件报错的原因

    一般R文件报错,无非是资源文件错误,图片命名错误,但是编译都会报错,可以很快解决.但是前几天,引入一个第三方aar包后,项目编译正确,但是就是R文件报错,找不到R文件,整个项目一片报红. 1)首先编译 ...

  5. [转]解决IIS下UTF-8文件报错乱码的问题

    找了两天才找到解决办法…….晕晕晕...用第二种方法解决了. 网上找到的方法都没有写这一条 If objASPError.ASPDescription > "" Then 后 ...

  6. AndroidStudio 点9图片文件报错

    如果项目中不仅9图报错,包含的资源还有一堆不合法PNG,那怎么办???这种情况下,正确的解决办法是找到build.gradle文件,在buildToolsVersion下面加入以下两句: aaptOp ...

  7. maven 的 pom.xml 文件报错:ArtifactTransferException: Failure to transfer

    因为maven下载依赖jar包时,特别慢,所以取消了下载过程,再次打开eclipse时,maven的pom.xml文件报错如下: ArtifactTransferException: Failure ...

  8. eclipse中的js文件报错的解决办法

    在使用别人的项目的时候,导入到eclipse中发现js文件报错,解决办法是关闭eclipse的js校验功能. 三个步骤: 1. 右键点击项目->properties->Validation ...

  9. 解决:eclipse导入android时工程下没有R文件的问题,以及style.xml文件报错

    解决:eclipse导入android时工程下没有R文件的问题,以及style.xml文件报错

  10. 解压tar.gz文件报错gzip: stdin: not in gzip format解决方法

    解压tar.gz文件报错gzip: stdin: not in gzip format解决方法 在解压tar.gz文件的时候报错 1 2 3 4 5 [Sun@localhost Downloads] ...

随机推荐

  1. VMware与Windows主机之间复制粘贴

    其实就是安装VMware Tools,但不知道为什么我的VMware Workstation不能安装VMware Tools,记得之前有次安装过,但是失败了. 基于apt-get命令下载安装其实是更好 ...

  2. 四、FreeRTOS学习笔记-任务创建和删除

    FreeRTOS的任务创建和删除 1,任务创建和删除的API函数(熟悉) 任务的创建和删除本质就是调用FreeRTOS的API函数 一.任务创建 动态创建任务:任务的任务控制块以及任务的栈空间所需的内 ...

  3. weex跨页面通信

    需求: A页面有表单和表格,点击表格中的按钮到B页面,B页面操作完毕,再次回到A页面,表单元素保持不变,表格内容刷新. 通过管道通信去做,用两个管道嵌套,A页面跳转到B页面的时候,直接用管道发过去,B ...

  4. Vue3 组合式API

    1.入口 创建实例时,配置setup方法,然后其内部书写组合式API代码,通过组合式API生产的数据和返回,需要暴漏出去才能给HTML使用 <script> //组合式(解构赋值) con ...

  5. Vue.js 组件注册

    1.前言 本节讲述组件和2.x版本和3.x版本的注册方式 2.全局注册 2.x版本直接调用Vue.component()方法进行全局注册,所有Vue实例都能使用,包括其组件 //组件代码省略 var ...

  6. 依赖注入在 dotnet core 中实现与使用:5. 使用支持 Unicode 的 HtmlEncoder

    现象 在 ASP.NET Core MVC 中,当在页面中传递了一个包含中文字符串到页面的时候,页面的显示是正常的,但是如果查看页面源码,却看不到中文,变成了一串编码之后的内容. 例如,在页面中直接定 ...

  7. Qt数据库应用13-通用数据库分页

    一.前言 数据库分页展示,在所有的涉及到数据库记录的项目中都是需要的,除了简单的设备信息表.用户信息表这种很少几条几十条数据量的表除外,其余的日志记录表等都需要分页展示数据,少量的数据可以滚动条下拉查 ...

  8. [转]BeanUtils.copyProperties使用总结以及注意事项

    1.前言开发过程中,讲一个对象的属性和值赋值到另一个对象上,大量使用了get.set方法,看着很臃肿,思考下肯定不只有我有这种想法,所以技术上肯定有方法能解决这个问题,所以查阅了一些资料发现了Bean ...

  9. ImageSharp:高性能跨平台.NET开源图形库

    在.Net中,System.Drawing有平台限制的问题,如果需要跨平台就需要使用第三方库. 今天推荐一个.NET开源图形库,不依赖任何库,支持跨平台的图形库. 01 项目简介 ImageSharp ...

  10. PostGIS数据库操作简介

    PostGIS数据库操作简介 PostGIS Docker安装 docker pull postgis/postgis docker run --name postgis -e POSTGRES_PA ...