1.增加proto文件夹,里面新建proto文件,如图;
2.pom.xml配置文件:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ddd</groupId>
<artifactId>ddd</artifactId>
<version>1.0</version>
</parent>
<artifactId>dddentity</artifactId>
<name>dddentity</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<grpc.version>0.13.2</grpc.version>
</properties>
<dependencies>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-core</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>com.orbitz.consul</groupId>
<artifactId>consul-client</artifactId>
<version>0.10.0</version>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.4.1.Final</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.0</version>
<configuration>
<!-- The version of protoc must match protobuf-java. If you don't depend
on protobuf-java directly, you will be transitively depending on the protobuf-java
version that grpc depends on. -->
<protocArtifact>com.google.protobuf:protoc:3.0.0-beta-2:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:0.13.2:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
3.proto文件示例:
syntax = "proto2";
option java_package = "com.exdata.dreamvegas.data.proto";
option java_multiple_files = true;
import "CommonConst.proto";
enum ADMatchType{
Single = 0; //单一赛事
Series = 1; //系列赛事
}
message ADMatchInfo {
required string title = 1; //标题
required ADMatchType type = 2; //公告类型
required GameType gameType =3; //类型
required MatchType matchType = 5; //赛事类型
required string adPicURL =6;
optional string matchID = 7; //单一赛事的赛事ID
}
4.判断是否编译成功:
complie后,在target目录下可以看到protoc插件,如图:
按proto文件配置的java_package包路径,可在classes下面看到生成的类文件:
5.编译时报错:
FATAL ERROR in native method: JDWP on getting class status, jvmtiError
解决方法:使用外置jdk,而不是myeplipse自带的jdk。如果还报错,再检查下debug的端口是否被别的程序占用或者关闭防火墙。