3

grpc-java の例を作ろうとしています。gradle を使用している場合は確かに簡単ですが、別のビルド システムを使用するプロジェクトに grpc を統合します。protoc、javac、およびjavaのみを使用してサンプルをコンパイルおよび実行する方法を知りたいです。.proto ソースから Java ソースを生成できますが、生成された Java ソースをコンパイルできません。

1000 の組み合わせ (異なるクラスパス) を試しましたが、何も機能しません。

> javac RouteGuideGrpc.java

< RouteGuideGrpc.java:3: error: package io.grpc.stub does not exist
import static io.grpc.stub.ClientCalls.asyncUnaryCall;

(その他99個のコンパイルエラーは省略)

機能する一連のコマンドを誰かが示すことができますか? ありがとうございました。

Upd:Linuxでこれを行っています。

Upd: 私は SBT を使用していますが、実際には問題ありません。私が本当に理解したいのは、javac を使用して生成された grpc コードをコンパイルする方法です。クラスパスにgrpc-core、grpc-netty、grpc-protobuf、およびgrpc-stubがあると確信しています(実際、この時点では何もわかりません...)。

4

3 に答える 3

1

実際、Gradle から SBT に移行しようとして、いくつかの問題に直面しました。

まず、ファイルをコンパイルするsbt-protobuf.protoプラグインを利用する必要があります。次のことを確認してください。

  • のパスバージョンを設定しますprotoc

version in PB.protobufConfig := "3.0.0"
protoc in PB.protobufConfig := PATH_PROTOC
  • 必要に応じて、.protoファイルの場所を設定します (デフォルトはsrc/main/protobuf):

sourceDirectory in PB.protobufConfig := baseDirectory.value / "src" / "main" / "proto"
  • 最後に、protocによって使用される追加のオプションを設定しますgrpc-java。最初のオプションは、protoc-gen-grpc-javaプラグイン ビンのパスを設定します。次に grpc-java の出力パスを次のように設定しますsbt-protobuf

protocOptions in PB.protobufConfig ++= Seq(
    "--plugin=protoc-gen-grpc-java=" + PATH_GRPC_JAVA_PLUGIN,
    "--grpc-java_out=" + baseDirectory.value + "/target/src_managed/main/compiled_protobuf")

私は、これらすべてを整理したリポジトリを配置することになりました。ここにあります。お役に立てば幸いです。

于 2016-09-30T16:12:16.183 に答える