pb文件转java 报:protoc did not exit cleanly. Review output for more information
我是强哥,互联网苟且的光头强,微信搜索【nlefer】,点个关注再看呗!
前言
protobuf (protocol buffer) 是谷歌内部的混合语言数据标准。通过将结构化的数据进行序列化(串行化),用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式,我们开发游戏的时候通常会用到相应的协议,因此,在做验证性能测试的时候,需要将pb文件转为java文件。
一、pb转java有哪几种方式?
pb文件转为java通常情况,存在两种转换方式(排除你是个大牛🐮,自己写个工具使用的情况)
- 通过maven将pb文件转为java文件
- 通过对应的执行以及执行文件进行pb文件的转换
今天我们针对第一种情况进行说明。
二、idea中实现maven进行pb文件转换
1.pom.xml配置
注意⚠️:我自己使用maven是3.8的,在进行配置的时候,要根据自己的版本进行适配
3. 首先配置的是dependencies中的内容,其中重点的主要是protobuf-java这个模块《注意这个版本号》
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.6.1</version>
</dependency>
- dependencies的整体内容
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.6.1</version>
</dependency>
</dependencies>
- build中的内容《注意protobuf-maven-plugi中版本要选对,不然的话会出现报错》
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.5.0.Final</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.0</version>
<configuration>
<!--suppress UnresolvedMavenProperty -->
<protocArtifact>com.google.protobuf:protoc:3.6.1:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<!--suppress UnresolvedMavenProperty -->
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.14.0:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置好以后,将对应的proto文件放到新创建的proto文件下,在maven中执行compile就可以啦,在target中我们可以找到对应的pb文件
2.pb转换出现报错
执行pb文件的时候出现了报错:Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.5.0:compile (default-cli) on project pbchange: protoc did not exit cleanly. Review output for more information.
这中情况下,我按照这个顺序,idea的详细报错提示->maven版本号(idea的setting中设置)判断->pom.xml中的配置信息(就是上面的那两个重要的内容)
看到具体的错误信息提示,原来是google自身带的any.proto,话不多说直接将这个删掉,再次执行mavne的compile,转换成功。可以使用啦

总结
当在编程中遇到这种情况时,我们排除了工具的问题以及配置问题后,那么可能就是本身自带的内容存在问题,直接将这种不会用到的自带内容删掉即可。
你懂的越多,就懂得不懂的越多,干就完了。
更多推荐


所有评论(0)