Protobuf生成文件报错
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.解决办法:
- 找到protoc-gen-go 文件,复制文件到
/usr/local/bin/
目录下,该文件通过go get安装时会默认安装在$GOPATH/go/bin目录下,博主本人的安装路径/Users/user/go/bin
执行复制命令:cp protoc-gen-go /usr/local/bin/ - 修改环境变量配置: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生成文件报错的更多相关文章
- 在请求中使用XML Publisher生成文件报错
在页面上使用按钮生成该文件不报错,但是使用请求就报错. 错误内容如下 Error : No corresponding LOB data found :SELECT L.FILE_DATA FILE_ ...
- JMeter 报告监听器导入.jtl结果文件报错解决方案
JMeter 报告监听器导入.jtl结果文件报错解决方案 by:授客 QQ:1033553122 1. 问题描述 把jmeter压测时生成的 .jtl结果文件导入监听器报告中,弹出如下错误提示 ...
- unity3d MonoDevelop引用外部自定义dll文件报错:are you missing an assembly reference?
在unity3d 编辑器 MonoDevelop 中引用外部自定义dll文件报错:are you missing an assembly reference? 因为unity还停留在.NET Fram ...
- R文件报错的原因
一般R文件报错,无非是资源文件错误,图片命名错误,但是编译都会报错,可以很快解决.但是前几天,引入一个第三方aar包后,项目编译正确,但是就是R文件报错,找不到R文件,整个项目一片报红. 1)首先编译 ...
- [转]解决IIS下UTF-8文件报错乱码的问题
找了两天才找到解决办法…….晕晕晕...用第二种方法解决了. 网上找到的方法都没有写这一条 If objASPError.ASPDescription > "" Then 后 ...
- AndroidStudio 点9图片文件报错
如果项目中不仅9图报错,包含的资源还有一堆不合法PNG,那怎么办???这种情况下,正确的解决办法是找到build.gradle文件,在buildToolsVersion下面加入以下两句: aaptOp ...
- maven 的 pom.xml 文件报错:ArtifactTransferException: Failure to transfer
因为maven下载依赖jar包时,特别慢,所以取消了下载过程,再次打开eclipse时,maven的pom.xml文件报错如下: ArtifactTransferException: Failure ...
- eclipse中的js文件报错的解决办法
在使用别人的项目的时候,导入到eclipse中发现js文件报错,解决办法是关闭eclipse的js校验功能. 三个步骤: 1. 右键点击项目->properties->Validation ...
- 解决:eclipse导入android时工程下没有R文件的问题,以及style.xml文件报错
解决:eclipse导入android时工程下没有R文件的问题,以及style.xml文件报错
- 解压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] ...
随机推荐
- Java虚拟机深入研究
文章来自:http://www.qqread.com/java/w872354600.html Java技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一 ...
- Java Study For Five Day( 面向对象一)
面向对象 1.面向对象的概念 2.理解面向对象 *面向对象其实是相对面向过程而言的,面向对象和面向过程都是一种思想,它们所强调的内容不一样. *面向对象:强调的是功能的行为,将功能进行了封装成了对象, ...
- msde2000的关于无法访问lonle实例的master数据库恢复
某次关机重启后,lonele数据库实例无法访问,查看发现相应的服务(MSSQL$LONELE2.SQLAgent$LONELE2)无法启动. --------------------------- 服 ...
- JDBC基础知识
常见连接数据库工具: 图形化工具:点击.拖拽就可以操作数据库,对用户友好,简单对数据操作,复杂数据库操作爱莫能助 JDBC(驱动程序):调用jar包接口 窗口(命令行):输入完整SQL语句对复杂数据库 ...
- js修改表单值不会触发input事件
前情 最近在做需求开发时候,需要监听表单的input事件 坑位 当通过JS动态修改表单的值的发现并不会触发表单的input事件 Why? 个人猜测是浏览器默认行为,input只会针对用户手动输入做响应 ...
- hello鸿蒙
1. 前言 鸿蒙是一款由华为推出的全生态操作系统(探索 | 华为开发者联盟),最近几年发展势头非常强劲,现在开始,让我们来一起认识他吧. 本文针对鸿蒙基本的开发内容做一次概览性的串联. 咱们学习一款新 ...
- HarmonyOS鸿蒙开发 - 解决上下两栏白边 - 沉浸式效果
鸿蒙应用开发从入门到入行 预览器上下两栏白边 自从HarmonyOS升级到release版后,很多同学会问猫林老师:为什么他的预览器上下有白边,为什么明明根容器写了宽高百分百但没铺满.如下图 白边原因 ...
- Java JUC&多线程 基础完整版
Java JUC&多线程 基础完整版 目录 Java JUC&多线程 基础完整版 1. 多线程的第一种启动方式之继承Thread类 2.多线程的第二种启动方式之实现Runnable接口 ...
- 使用Java将视频中某一帧抽取为封面图片
由于业务需求需将视频中的某帧进行截取作为该视频封面,网上太多教程过于复杂麻烦,经本人研究发现可以使用Java调用FFmpeg来进行处理. /** * 获取指定的视频文件后进行封面截图为png并保存到指 ...
- Git+Gitee使用分享
Git+Gitee快速入门 创建仓库 初始化本地仓库 验证本地git是否安装好 打开cmd窗口,输入git 这样就OK. Git 全局设置:(只需要设置一次) 这台电脑如果是第一次使用 ...