【问题标题】:Cannot resolve symbol class while implementing server from proto buff - unary API从 proto buff 实现服务器时无法解析符号类 - 一元 API
【发布时间】:2018-12-11 18:39:55
【问题描述】:

Gradle 项目

尝试使用 java-gradle 项目实现 grpc - 一元 API

Build.gradle

group = "com.kaushik.grpc" 版本 = "1.0-SNAPSHOT"

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

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

repositories {
    mavenCentral()
}

description = "gRPC Java Examples"

dependencies {
    compile 'io.grpc:grpc-all:0.13.1'
}


protobuf {
    protoc {
        // The version of protoc must match protobuf-java. If you don't depend on
        // protobuf-java directly, you will be transitively depending on the
        // protobuf-java version that grpc depends on.
        artifact = "com.google.protobuf:protoc:3.0.0-beta-2"
    }
    plugins {
        grpc {
            artifact = 'io.grpc:protoc-gen-grpc-java:0.13.1'
        }
    }
    generateProtoTasks {
        all()*.plugins {
            grpc {}
        }
    }
}

greet.proto

syntax = "proto3";

package greet;

option java_package = "com.proto.greet";
option java_multiple_files = true;

message Greeting {
    string first_name = 1;
    string last_name = 2;
}

message GreetRequest {
    Greeting greeting = 1;
}

message GreetResponse {
    string result = 1;
}

service GreetService {
    //unary
    rpc Greet(GreetRequest) returns (GreetResponse) {};
}

在尝试扩展 GreetServiceGrpc 时

import com.proto.greet.GreetServiceGrpc;
public class GreetServiceImpl extends GreetServiceGrpc.GreetServiceImplBase{

}

无法解析符号 GreetServiceImplBase。 即使在构建路径中也没有带有 GreetServiceImplBase 的类。

【问题讨论】:

    标签: java gradle intellij-idea protocol-buffers grpc-java


    【解决方案1】:

    GreetServiceImplBase 是根据 gradle 文件中的配置(依赖关系,生成的源目录)生成的。 gradle 文件中的示例条目:

    dependencies {
    compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.6.1'
    
    testCompile group: 'junit', name: 'junit', version: '4.12'
    
    compile group: 'io.grpc', name: 'grpc-stub', version: '1.16.1'
    
    compile group: 'io.grpc', name: 'grpc-protobuf', version: '1.16.1'
    
    compile group: 'io.grpc', name: 'grpc-netty', version: '1.16.1'
    
    compile "io.grpc:grpc-all:1.16.1"
    compile group: 'com.github.os72', name: 'protoc-jar', version: '3.6.0'
    compile group: 'org.projectlombok', name:'lombok', version: '1.18.4'
    compile 'com.google.protobuf:protobuf-java-util:3.6.1'
    }
    sourceSets {
        main {
            java {
                srcDirs = ["src/main/java/", "src/generated/main/grpc/", "src/generated/main/java/"]
            }
        }
        test {
            java {
                srcDirs = ["src/test/"]
            }
        }
    }
    idea {
        module {
            sourceDirs += file("${projectDir}/src/generated/main/java");
            sourceDirs += file("${projectDir}/src/generated/main/grpc");
        }
    }
    clean {
        delete "$projectDir/src/generated"
    }
    

    现在执行 gradle 任务“generateProto”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-11
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多