> .proto生成java或其他语言
1. 首先看看一个简单的service.proto文档
~~~
syntax = "proto3";
option java_package = "com.zjm.gRpc.service"; //产生文件存放的包路径
option java_outer_classname = "GRpcService"; //通讯类
option java_multiple_files = true; //是否产生多个类,如果false就会产生很多内部类
// 定义通用的 GRpc 服务,会生成CommonServiceGRpc,客户端去里面的Stub,服务端要实现里面的handle,handle是里面定义的方法
service CommonService {
// 处理请求
rpc handle ( Request ) returns ( Response ) {} //这是定义的方法,参数会有Request这个类,返回Response这个类
}
// 定义通用的 GRpc 请求体
message Request {
int32 serialize = 1; //这个请求,会有一个序列化索引,用于服务端的序列化方法
bytes request = 2; //byte[],这个是请求的真正requestBody
}
// 定义通用的 GRpc 响应体
message Response {
bytes response = 1; //byte[],这个是请求的真正responseBody
}
~~~
1. Request和Response和GRpcService的model生成
```
cd G:\protoc-3.9.1-win64\bin
G:
protoc --java_out=./ service.proto
```
这时候会在当前目录生成
com\zjm\gRpc\service目录(这时候生成的是没有CommonServiceGrpc这个service的)
![](https://img.kancloud.cn/f9/dc/f9dc8a7959818902103dca736dff53ce_1044x199.png)
2. 生成service(CommonServiceGrpc)
```
cd G:\protoc-3.9.1-win64\bin
G:
protoc --plugin=protoc-gen-grpc-java=./gen.exe --grpc-java_out=./ service.proto
```
会在com\zjm\gRpc\service生成CommonServiceGrpc
3. 我的目录
![](https://img.kancloud.cn/01/c6/01c62778513f481474004bf95a697d1a_1052x365.png)
记得去下载和你使用protobuff相同的protoc编译器,我的是java里面使用的protobuff 3.7.1,所以下载的protoc是3.7.1([https://github.com/google/protobuf/releases](https://github.com/google/protobuf/releases))
然后去下载protoc-gen-grpc-java-1.10.0-windows-x86_64.exe(http://central.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.10.0/protoc-gen-grpc-java-1.10.0-windows-x86_64.exe) ,这个下载后放在bin里面