Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

grpc-kotlin: Unresolved reference

I try to compile proto definitions into kotlin stubs, but get import issues. My gradle is


protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:3.21.2"
    }

    plugins {
        grpckt {
            artifact = "io.grpc:protoc-gen-grpc-kotlin:1.3.0:jdk8@jar"
        }
    }

    generateProtoTasks {
        all().forEach { task ->
            task.builtins {
                grpckt {
                    option 'lite'
                }
            }
            task.plugins {
                kotlin {
                    option 'lite'
                }
            }
        }
    }
}

dependencies {

    //grpc dependency
    implementation("io.grpc:grpc-kotlin-stub:1.3.0")
    implementation 'io.grpc:grpc-okhttp:1.47.0'
    implementation("io.grpc:grpc-protobuf:1.47.0")
    implementation("com.google.protobuf:protobuf-kotlin:3.21.12")
    implementation 'io.grpc:grpc-protobuf-lite:1.47.0'

}

I have few proto files. After proto compiled I get the files with import errors: enter image description here

option java_multiple_files = true - doesn`t help.

like image 243
Andreas Avatar asked Mar 17 '26 02:03

Andreas


1 Answers

It might be too late, but for all those who found their way here through Google, you also need to generate Java source files to make this work.

protobuf {
    protoc { artifact = "com.google.protobuf:protoc:${protobufVersion}" }
    plugins {
        id("grpc") {
            artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
        }
        id("grpckt") {
            artifact = "io.grpc:protoc-gen-grpc-kotlin:${grpcKotlinVersion}:jdk8@jar"
        }
        id("java"){
            artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
        }
    }
    generateProtoTasks {
        all().forEach { task ->
            task.plugins {
                id("grpc") {
                    option("lite")
                }
                id("grpckt") {
                    option("lite")
                }
                id("java") {
                    option("lite")
                }
            }
            task.builtins {
                id("kotlin")
            }
        }
    }
}

dependencies {
    implementation("io.grpc:grpc-okhttp:${grpcVersion}")
    implementation("io.grpc:grpc-protobuf-lite:${grpcVersion}")
    implementation("io.grpc:grpc-stub:${grpcVersion}")
    implementation("io.grpc:grpc-kotlin-stub:${grpcKotlinVersion}")
    implementation("com.google.protobuf:protobuf-javalite:${protobufVersion}")
    implementation("com.google.protobuf:protobuf-kotlin-lite:${protobufVersion}")
}
like image 148
Mivik Avatar answered Mar 20 '26 00:03

Mivik