平台:Windows 10 PC; Java:1.8.0_201; gRPC:1.21.x
我最近研究了Google RPC(gRPC)软件包,尝试对其进行评估以用于Java。我已阅读了该站点(grpc.io)上的许多可用信息,并试图下载/构建/安装它以进行测试评估。 我运气不好。
(无论如何,对我而言)尚不清楚要使用gRPC到底需要什么。似乎有许多活动的部分,很难说出所需的一切。我知道它使用Google Protobuf,因此我按照说明安装了Protobuf编译器protoc
。我不确定除编译器外是否还需要其他Protobuf。我假设gRPC有一个“核心”,然后是实现特定语言与Java程序接口的特定语言模块(例如,对于Java)。我不知道是否还有其他依赖项。
由于我使用的安全策略,我无法克隆git repo,但是我下载了发行版(来自https://github.com/grpc/grpc-java的v1.21.x)并将其解压缩到目录中。我按照说明构建了示例客户端和服务器。由于缺少文件,该过程失败。以下是失败的摘录。
> Task :grpc-compiler:compileJava_pluginExecutableJava_pluginCpp
java_generator.h
C:\Users\jo24447\workspace\gRPC\grpc-java-1.21.x\compiler\src\java_plugin\cpp\java_generator.h(8): fatal error C1083: Cannot open include file: 'google/protobuf/io/zero_copy_stream.h': No such file or directory
java_plugin.cpp
c:\users\jo24447\workspace\grpc\grpc-java-1.21.x\compiler\src\java_plugin\cpp\java_generator.h(8): fatal error C1083: Cannot open include file: 'google/protobuf/io/zero_copy_stream.h': No such file or directory
java_generator.cpp
c:\users\jo24447\workspace\grpc\grpc-java-1.21.x\compiler\src\java_plugin\cpp\java_generator.h(8): fatal error C1083: Cannot open include file: 'google/protobuf/io/zero_copy_stream.h': No such file or directory
我加入了gRPC邮件列表,并提交了一些描述我所遇到的问题的问题。简短的回复表明我应该下载最新版本(我拥有的最新版本)-我本来已经删除了master分支,显然这是错误的做法。暗示它附带了一个预构建的代码生成器插件(codegen)。没有给出构建失败的原因。
还提供了指向构建代码生成插件的说明的链接。该站点文档似乎表明,除非我实际上在更改代码,否则不需要构建代码源,而实际上不是。无论如何,我都仔细阅读了说明。看来打算在* nix平台上完成此操作。在Windows平台上执行此操作的人应该做什么?
无论如何,我都尝试使用新发行版进行构建,但由于相同问题而失败。我回复了,什么也没听到。
这时我陷入困境,不知道下一步该怎么做。
关于以下内容的任何想法都会非常有帮助和赞赏:
答案 0 :(得分:1)
我在某种程度上以mailing list thread you referenced作为回应。
grpc-java是它自己的完整实现。它不是基于https://github.com/grpc/grpc上的“ C内核”。
简而言之,您已经走了一条破败的道路;您不需要自己编译grpc-java。我们已经在Maven Central上提供了二进制文件。
下载grpc-java时,应该已经下载了v1.12.0,它是发行版标签,而不是v1.12.x。已发布的版本可以轻松地从release section下载。
当git clone
不可用时,我们没有明确的指示,因为这很少见,并且答案会因环境而异。
答案 1 :(得分:1)
如果您想对gRPC-Java进行更改或自己构建,请参见the instructions。 但是您无需执行此操作即可使用它。
要在Maven / Gradle项目中使用,只需添加必要的依赖项:
行家
n=1000000
ID=rand(10, n)
x=rand(1.0, n)
t=table(ID, x)
db=database("C:/DolphinDB/Data/rangedb", RANGE, 0 5 10)
pt = db.createPartitionedTable(t, `pt, `ID)
pt.append!(t)
pt=loadTable(db,`pt)
select count(x) from pt;
Gradle
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.20.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.20.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.20.0</version>
</dependency>
对于基于protobuf的代码源,您可以使用与构建系统集成的插件:
compile 'io.grpc:grpc-netty-shaded:1.20.0'
compile 'io.grpc:grpc-protobuf:1.20.0'
compile 'io.grpc:grpc-stub:1.20.0'
<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.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.7.1:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.20.0:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
您可以在the README中找到更多详细信息。