2017-05-20 17 views
2

Gradleを使用してProtobufで生成されたクラスをインポートする際に問題があります。IntobiでGradleを使用してProtobufで生成されたクラスをインポート

これは私のプロジェクトツリーがどのように見えるかです:の

import generated.main.grpc.GreeterGrpc; 
import main.java.HelloRequest; 
import java.*; 
import HelloRequest; 

なし:

Project tree:

私はソースとしてパッケージをマークしようとしました、私は輸入品のすべての可能な組み合わせを試してみましたそれらは働く。ここに私のbuild.gradleは以下のとおりです。

group 'andu' 
version '1.0-SNAPSHOT' 

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

sourceCompatibility = 1.5 

repositories { 
    mavenCentral() 
    maven { url "https://plugins.gradle.org/m2/" } 
} 

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

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
    compile 'io.grpc:grpc-protobuf:1.0.0-pre2' 
    compile 'com.google.protobuf:protobuf-java:3.0.0' 
    compile 'io.grpc:grpc-stub:1.0.0-pre2' 
    compile 'io.grpc:grpc-netty:1.3.0' 
    compile 'io.grpc:grpc-protobuf:1.3.0' 
    compile 'io.grpc:grpc-stub:1.3.0' 
} 



sourceSets { 
    main { 
     proto { 
      srcDir 'src/main/proto' 
     } 
     java { 
      srcDirs = ['src/main/java', 'generated/main/java'] 
     } 
    } 
} 

protobuf { 
    protoc { 
     artifact = "com.google.protobuf:protoc:3.2.0" 
    } 
    plugins { 
     grpc { 
      artifact = 'io.grpc:protoc-gen-grpc-java:1.3.0' 
     } 
    } 

    generateProtoTasks.generatedFilesBaseDir = 'generated' 

    generateProtoTasks { 
     all()*.plugins { 
      grpc {} 
     } 
    } 
} 

私は

generateProtoTasks.generatedFilesBaseDir = 'generated' 

を追加する前に、私の生成されたクラスのすべてはあなたが生成したい場合は/生成/メイン/ javaの

答えて

-1

を構築するために追加されますjavaの場合、プロトタイプファイルに次のようにパッケージ名を記述する必要があります。

option java_package = "com.example"; 

これを実行して再度生成します。

は次のようにインポートします。

`import com.example.HelloRequest;` 
+0

これは、問題を解決しません。私はまだmain/src/javaに生成されたファイルをインポートすることはできません –

1

SBTにすべてがIDEでそれをhiglightningのそのだけの問題で、うまく働いている間、私はIntelliJの中に同じ問題を抱えていました。私は 'Project structure' - > 'Modules' - > 'root' - > 'Depencencies' - > '+'をクリックしなければなりませんでした。

2

それは私がAndroidのプロジェクトでこれをやったので、少し違うかもしれませんが、どのような私のために働いたことは私のルートbuild.gradleにclasspath "com.google.protobuf:protobuf-gradle-plugin:0.8.1"を追加し、アプリbuild.gradleに従っていました。

コンパイルオプションでbuild project automaticallyoptionが選択されていない限り、実行のみが自動的にクラスを生成するわけではないため、gradleビルドを実行することも忘れないでください。

apply plugin: 'com.google.protobuf' 

protobuf { 
    generatedFilesBaseDir = "$projectDir/generated" 
    protoc { 
     artifact = 'com.google.protobuf:protoc:3.0.0' 
    } 
    plugins { 
     javalite { 
      artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0" 
     } 
     grpc { 
      artifact = 'io.grpc:protoc-gen-grpc-java:1.0.3' 
     } 
    } 
    generateProtoTasks { 
     all().each { task -> 
      task.builtins { 
       java 
      } 
      task.plugins { 
       grpc {} 
      } 
     } 
    } 
} 

//Protobuf 
compile 'com.google.protobuf:protobuf-lite:3.0.0' 
compile 'com.google.protobuf:protobuf-java:3.0.0' 

//GRPC 
compile('io.grpc:grpc-protobuf:1.1.1') { 
    exclude module: 'jsr305' 
} 
compile('io.grpc:grpc-okhttp:1.1.1') { 
    exclude module: 'jsr305' 
} 
compile('io.grpc:grpc-stub:1.1.1') { 
    exclude module: 'jsr305' 
} 

また、gRPCを使用して2つの基本的ではあるが実用的な例を作成しました。 Example Java project Mavenを使用している場合(Mavenに切り替えることができる場合)また、基本的なExample Android projectでは、グラデーションを使用しています(私はnettyの代わりにjava-liteとokhttpを使用しています)。

関連する問題