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. Java虚拟机深入研究

    文章来自:http://www.qqread.com/java/w872354600.html Java技术与Java虚拟机  说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一 ...

  2. Java Study For Five Day( 面向对象一)

    面向对象 1.面向对象的概念 2.理解面向对象 *面向对象其实是相对面向过程而言的,面向对象和面向过程都是一种思想,它们所强调的内容不一样. *面向对象:强调的是功能的行为,将功能进行了封装成了对象, ...

  3. msde2000的关于无法访问lonle实例的master数据库恢复

    某次关机重启后,lonele数据库实例无法访问,查看发现相应的服务(MSSQL$LONELE2.SQLAgent$LONELE2)无法启动. --------------------------- 服 ...

  4. JDBC基础知识

    常见连接数据库工具: 图形化工具:点击.拖拽就可以操作数据库,对用户友好,简单对数据操作,复杂数据库操作爱莫能助 JDBC(驱动程序):调用jar包接口 窗口(命令行):输入完整SQL语句对复杂数据库 ...

  5. js修改表单值不会触发input事件

    前情 最近在做需求开发时候,需要监听表单的input事件 坑位 当通过JS动态修改表单的值的发现并不会触发表单的input事件 Why? 个人猜测是浏览器默认行为,input只会针对用户手动输入做响应 ...

  6. hello鸿蒙

    1. 前言 鸿蒙是一款由华为推出的全生态操作系统(探索 | 华为开发者联盟),最近几年发展势头非常强劲,现在开始,让我们来一起认识他吧. 本文针对鸿蒙基本的开发内容做一次概览性的串联. 咱们学习一款新 ...

  7. HarmonyOS鸿蒙开发 - 解决上下两栏白边 - 沉浸式效果

    鸿蒙应用开发从入门到入行 预览器上下两栏白边 自从HarmonyOS升级到release版后,很多同学会问猫林老师:为什么他的预览器上下有白边,为什么明明根容器写了宽高百分百但没铺满.如下图 白边原因 ...

  8. Java JUC&多线程 基础完整版

    Java JUC&多线程 基础完整版 目录 Java JUC&多线程 基础完整版 1. 多线程的第一种启动方式之继承Thread类 2.多线程的第二种启动方式之实现Runnable接口 ...

  9. 使用Java将视频中某一帧抽取为封面图片

    由于业务需求需将视频中的某帧进行截取作为该视频封面,网上太多教程过于复杂麻烦,经本人研究发现可以使用Java调用FFmpeg来进行处理. /** * 获取指定的视频文件后进行封面截图为png并保存到指 ...

  10. Git+Gitee使用分享

    Git+Gitee快速入门 创建仓库 ​ ​ ​ 初始化本地仓库 验证本地git是否安装好 打开cmd窗口,输入git ​ 这样就OK. Git 全局设置:(只需要设置一次) 这台电脑如果是第一次使用 ...