gpt4 book ai didi

java - 编译 GRPC 服务器/客户端

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:42:32 25 4
gpt4 key购买 nike

我在弄清楚如何编译 GRPC Java 服务器时遇到了很多麻烦。我查看了整个 grpc.io 网站,发现最接近的是:http://www.grpc.io/docs/#quick-start ,我跑的地方../gradlew -PskipCodegen=true installDist 构建,和./build/install/grpc-examples/bin/hello-world-client 运行客户端。这一切都有效,但仅适用于 hello-world 教程。我不知道如何为我自己的客户端/服务器执行此操作。我能够使用 .proto 文件生成客户端/服务器 protobuf。我查看了他们的自述文件和 Java 教程,但在编写它们之后找不到如何编译实际的服务器(和客户端) https://github.com/grpc/grpc-java/blob/master/examples/README.md(无法链接 java 教程,因为我没有足够的声誉)。除非缺少文档,否则有人知道如何编译实现从 .proto 文件生成的 GRPC 类的服务器和客户端吗?我确实花了相当多的时间进行搜索。非常感谢任何建议,谢谢。

最佳答案

也有类似的问题,确保:

  1. 您正确配置了协议(protocol),它将是downloading the executable并将其配置为操作系统的环境变量。
  2. build.gradle 文件,确保包含protobuf-gradle-plugin :

    apply plugin: 'java'
    apply plugin: 'idea'
    apply plugin: 'com.google.protobuf'

    ext.grpcVersion = '1.0.1'
    ext.protobufVersion = '3.0.2'

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

    repositories {
    mavenCentral()
    }

    dependencies {
    compile "com.google.protobuf:protobuf-java:${protobufVersion}"
    compile "io.grpc:grpc-all:${grpcVersion}"
    }

    protobuf {
    protoc { artifact = "com.google.protobuf:protoc:${protobufVersion}" }
    plugins { grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" } }
    generateProtoTasks { ofSourceSet('main')*.plugins { grpc { } } }
    }

    idea {
    module {
    sourceDirs += file("${protobuf.generatedFilesBaseDir}/main/java");
    sourceDirs += file("${protobuf.generatedFilesBaseDir}/main/grpc");
    }
    }
  3. 你的 proto 文件:

    syntax = "proto3";
    package com.company.project;

    service CompanyService{
    rpc call(RequestMessage) returns (ResponseMessage) {}
    }
  4. 运行 gradle clean build,它应该为 CompanyService 生成您的服务和客户端类。

idea 插件,只是告诉 IntelliJ 将 src/main/proto 识别为源集。

  1. 要实际执行客户端和服务器,您需要执行 gRpc 教程中提到的实现,然后应用 application 插件,以便正确生成可执行文件 jar

    //build.grdle code...
    apply plugin: 'application'
    mainClassName = 'com.company.project.MainClass'
    jar { manifest { attributes('Main-Class' : mainClassName) } }

关于java - 编译 GRPC 服务器/客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33376453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com