Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与gRPC的混淆_Java_Grpc_Grpc Java - Fatal编程技术网

Java 与gRPC的混淆

Java 与gRPC的混淆,java,grpc,grpc-java,Java,Grpc,Grpc Java,平台:windows10pc; Java:1.8.0_201; gRPC:1.21.x 我最近研究了GoogleRPC(gRPC)包,试图对其进行评估,以便与Java一起使用。我已经阅读了网站(grpc.io)上的大量可用信息,并尝试下载/构建/安装它以进行测试评估我运气不太好。 使用gRPC到底需要什么(对我来说)有点不清楚。似乎有许多活动部件,很难说出所需的一切。我知道它使用Google Protobuf,所以我按照说明安装Protobuf编译器,protoc。除了编译器,我不确定Proto

平台:windows10pc; Java:1.8.0_201; gRPC:1.21.x

我最近研究了GoogleRPC(gRPC)包,试图对其进行评估,以便与Java一起使用。我已经阅读了网站(grpc.io)上的大量可用信息,并尝试下载/构建/安装它以进行测试评估我运气不太好。

使用gRPC到底需要什么(对我来说)有点不清楚。似乎有许多活动部件,很难说出所需的一切。我知道它使用Google Protobuf,所以我按照说明安装Protobuf编译器,
protoc
。除了编译器,我不确定Protobuf是否还需要其他东西。我假设gRPC有一个“核心”,然后是一个特定于语言的模块(例如Java),它实现了与Java程序接口所需的逻辑。我不知道是否还有其他依赖项

由于我工作的安全策略,我无法克隆git repo,但我下载了发行版(v1.21.x from)并将其解压缩到一个目录中。我按照说明构建了示例客户机和服务器。由于缺少文件,进程失败。下面是失败的摘录

> 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邮件列表,并提交了一些描述我所面临问题的问题。简短的回复表明我应该删除最新版本(我已经删除了)-我最初删除了主分支,显然这是错误的。这意味着它附带了一个预构建的代码生成器插件(codegen)。我没有得到构建失败的原因

还提供了一个链接,指向构建codegen插件的说明。站点文档似乎表明我不需要构建codegen,除非我确实在更改代码,而我不是。不管怎样,我看了说明书。这似乎是为了在*nix平台上完成。在Windows平台上执行此操作的人应该做什么

在任何情况下,我尝试用新发行版进行构建,但失败的原因是同样的问题。我回应了,什么也没听到

在这一点上,我被卡住了,不知道下一步该怎么办

关于以下内容的任何想法都将非常有帮助,我们将不胜感激:

  • 允许成功构建所需的最低分发版本,以及 后续使用
  • 关于需要采取的步骤的明确指示 从下载的发行版下载到功能齐全的应用程序/实用程序

我已经在我假设的情况下做出了部分回应

GRPCJava是它自己的完整实现。它不是基于“C核心”的

简而言之,你已经走出了老路;您不需要自己编译GRPCJava。我们已经在Maven Central上提供了二进制文件

当您下载GRPCJava时,您应该下载v1.12.0,它是发行标签,而不是v1.12.x。发布的版本可以在中轻松下载


当git clone不可用时,我们没有明确的说明,因为这种情况很少见,而且每个环境的答案都会有所不同。

我已经在我假设的问题中做出了部分回应

GRPCJava是它自己的完整实现。它不是基于“C核心”的

简而言之,你已经走出了老路;您不需要自己编译GRPCJava。我们已经在Maven Central上提供了二进制文件

当您下载GRPCJava时,您应该下载v1.12.0,它是发行标签,而不是v1.12.x。发布的版本可以在中轻松下载


当无法使用
git clone
时,我们没有明确的说明,因为这很少见,而且每个环境的答案都会有所不同。

如果您想更改gRPC Java或自己构建它,请参阅。 但是你不需要这样做来使用它


要在Maven/Gradle项目中使用,只需添加必要的依赖项:

马文


对于基于protobuf的codegen,您可以使用与构建系统集成的插件:



如果您想对gRPC Java进行更改或自己构建,请参见。

。 但是你不需要这样做来使用它


要在Maven/Gradle项目中使用,只需添加必要的依赖项:

马文


对于基于protobuf的codegen,您可以使用与构建系统集成的插件:



您可以在中找到更多详细信息。

如果我解释正确,我不需要下载grpc java,也不需要使用grpc java执行任何操作。我应该能够在pom.xml中设置依赖项并完成它。对吗?对,对。Maven/Gradle将从Maven Central下载必要的组件。现在回想起来,我不知道我是如何偏离轨道的。一旦我下载了正确的发行版(即v1.20.0而不是v.1.20.x),所有的构建/安装都很好。如果我解释正确,我就不需要下载grpc java,也不需要使用grpc java做任何事情。我应该能够在pom.xml中设置依赖项并完成它。对吗?对,对。Maven/Gradle将从Maven Central下载必要的组件。现在回想起来,我不知道我是如何偏离轨道的。一旦我下载了正确的发行版(即v1.20.0而不是v.1.20.x),构建/安装的一切都很好。
<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>
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>
apply plugin: 'com.google.protobuf'

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.8'
  }
}

protobuf {
  protoc {
    artifact = "com.google.protobuf:protoc:3.7.1"
  }
  plugins {
    grpc {
      artifact = 'io.grpc:protoc-gen-grpc-java:1.20.0'
    }
  }
  generateProtoTasks {
    all()*.plugins {
      grpc {}
    }
  }
}