ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mac安装使用Protobuf

2022-08-23 15:04:02  阅读:212  来源: 互联网

标签:java Protobuf package 定义 Mac false 默认值 安装 protobuf


1、下载安装包

protobuf下载地址

目前最新版本protobuf-java-3.21.5.tar.gz

2、安装

tar -xzvf protobuf-java-3.21.5.tar.gz
cd protobuf-3.21.5
./configure
make
make check
sudo make install

3、验证

which protoc
protoc --version

4、idea使用proto

4.1、配置pom

<dependencies>
  <dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.21.5</version>
  </dependency>
</dependencies>
<build>
  <plugins>
    <plugin>
      <groupId>org.xolstice.maven.plugins</groupId>
      <artifactId>protobuf-maven-plugin</artifactId>
      <version>0.6.1</version>
      <configuration>
        <!--proto 文件目录-->
        <protoSourceRoot>${project.basedir}/src/main/resources/demo</protoSourceRoot>
        <!--编译后文件的输出的目录-->
        <outputDirectory>${project.build.sourceDirectory}</outputDirectory>
        <!--设置是否在生成java文件之前清空outputDirectory的文件,默认值为true-->
        <clearOutputDirectory>false</clearOutputDirectory>
      </configuration>
    </plugin>
  </plugins>
</build>

4.2、proto文件

//定义的是protobuf中使用的syntax协议,默认情况下是proto2,因为目前最新的协议是proto3
syntax = "proto3";
//package是指编译的时候生成文件的包。这是一个命名空间,虽然我们在后面定义了java_package,但是为了和非java语言中的协议相冲突
package com.nile;
//java_multiple_files指编译过后java文件的个数,默认是false
//如果是true,那么将会一个java对象一个类,如果是false,那么定义的java对象将会被包含在同一个文件中。
option java_multiple_files = false;
//java_package指定生成的类应该使用的Java包名称。 如果没有明确的指定,则会使用之前定义的package的值。
option java_package = "com.nile.protos";
//java_outer_classname选项定义将表示此文件的包装类的类名。
// 如果没有给java_outer_classname赋值,它将通过将文件名转换为大写驼峰来生成。
// 例如,默认情况下,“msg.proto”将使用”Msg”作为包装类名称。
option java_outer_classname = "MsgProto";

//消息的定义,对于简单类型来说可以使用bool, int32, float, double, 和 string来定义字段的类型。
message Msg {
  uint32 id = 1;
  optional string content = 2;
}
//字段的修饰符,有三个修饰符分别是optional,repeated和required。
//
//optional表示该字段是可选的,可以设置也可以不设置,如果没有设置,则会使使用默认值,对于简单类型来说,我们可以自定义默认值,如果不自定义,就会使用系统的默认值。对于系统的默认值来说,数字为0,字符串为空字符串,布尔值为false。
//
//repeated表示该字段是可以重复的,这种重复实际上就是一种数组的结构。
//
//required表示该字段是必须的,如果该字段没有值,那么该字段将会被认为是没有初始化,尝试构建未初始化的消息将抛出 RuntimeException,解析未初始化的消息将抛出 IOException。

//在Proto3中不支持required字段。

4.3、编译生成java类

img

标签:java,Protobuf,package,定义,Mac,false,默认值,安装,protobuf
来源: https://www.cnblogs.com/Nilekai/p/16616169.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有