问题:我无法实现从protobuf自动生成的对象。
如何复制:从micronaut初始值设定项生成一个项目,该项目具有:gRPC应用程序类型、Java 11、Kotlin。添加io。grpc:protoc gen grpc kotlin正在构建中。gradle,构建它,添加一个控制器,然后尝试实现GrpcdemoServiceGrpcKt。
建筑格拉德尔
plugins {
id "org.jetbrains.kotlin.jvm" version "1.4.10"
id "org.jetbrains.kotlin.kapt" version "1.4.10"
id "org.jetbrains.kotlin.plugin.allopen" version "1.4.10"
id "com.github.johnrengelman.shadow" version "6.1.0"
id "io.micronaut.application" version '1.0.5'
id "com.google.protobuf" version "0.8.13"
}
version "0.1"
group "com.mybank"
repositories {
mavenCentral()
jcenter()
}
micronaut {
testRuntime "junit5"
processing {
incremental true
annotations "com.mybank.*"
}
}
dependencies {
implementation("io.micronaut:micronaut-validation")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
implementation("io.micronaut:micronaut-runtime")
implementation("io.micronaut.grpc:micronaut-grpc-runtime")
implementation("javax.annotation:javax.annotation-api")
runtimeOnly("ch.qos.logback:logback-classic")
runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")
testImplementation("io.micronaut:micronaut-http-client")
implementation("io.grpc:grpc-kotlin-stub:${grpcKotlinVersion}")
}
mainClassName = "com.mybank.ApplicationKt"
java {
sourceCompatibility = JavaVersion.toVersion('11')
}
compileKotlin {
kotlinOptions {
jvmTarget = '11'
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = '11'
}
}
sourceSets {
main {
java {
srcDirs 'build/generated/source/proto/main/grpc'
srcDirs 'build/generated/source/proto/main/java'
}
}
}
protobuf {
protoc { artifact = "com.google.protobuf:protoc:3.13.0" }
plugins {
grpc { artifact = "io.grpc:protoc-gen-grpc-java:1.32.1" }
grpckt { artifact = "io.grpc:protoc-gen-grpc-kotlin:${grpcKotlinVersion}" }
}
generateProtoTasks {
all()*.plugins {
grpc {}
grpckt {}
}
}
}
格拉德尔。属性
micronautVersion=2.1.3
kotlinVersion=1.4.10
grpcKotlinVersion=0.1.2
其余的都和micronaut.launch一模一样
可能的解决方案:我下载了一个示例,并成功地启动了它,并从BloomRPC调用了它。它来自官方示例github。看着它,我看到了一个更加复杂的渐变。
从Hello World构建gradle
plugins {
id "org.jetbrains.kotlin.jvm" version "1.3.72"
id "org.jetbrains.kotlin.kapt" version "1.3.72"
id "org.jetbrains.kotlin.plugin.allopen" version "1.3.72"
id "application"
id 'com.google.protobuf' version '0.8.13'
}
version "0.2"
group "helloworld"
repositories {
mavenLocal()
jcenter()
}
configurations {
// for dependencies that are needed for development only
developmentOnly
}
dependencies {
kapt(enforcedPlatform("io.micronaut:micronaut-bom:$micronautVersion"))
kapt("io.micronaut:micronaut-inject-java")
kapt("io.micronaut:micronaut-validation")
implementation(enforcedPlatform("io.micronaut:micronaut-bom:$micronautVersion"))
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion")
implementation("io.micronaut:micronaut-runtime")
// implementation("io.micronaut.grpc:micronaut-grpc-runtime")
implementation("io.micronaut.grpc:micronaut-grpc-server-runtime:$micronautGrpcVersion")
implementation("io.micronaut.grpc:micronaut-grpc-client-runtime:$micronautGrpcVersion")
implementation("io.grpc:grpc-kotlin-stub:${grpcKotlinVersion}")
runtimeOnly("ch.qos.logback:logback-classic:1.2.3")
runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8")
kaptTest("io.micronaut:micronaut-inject-java")
testImplementation enforcedPlatform("io.micronaut:micronaut-bom:$micronautVersion")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.3.0")
testImplementation("io.micronaut.test:micronaut-test-junit5")
testImplementation("org.mockito:mockito-junit-jupiter:2.22.0")
testRuntime("org.junit.jupiter:junit-jupiter-engine:5.3.0")
testRuntime("org.jetbrains.spek:spek-junit-platform-engine:1.1.5")
}
test.classpath += configurations.developmentOnly
mainClassName = "helloworld.Application"
test {
useJUnitPlatform()
}
allOpen {
annotation("io.micronaut.aop.Around")
}
compileKotlin {
kotlinOptions {
jvmTarget = '1.8'
//Will retain parameter names for Java reflection
javaParameters = true
}
}
//compileKotlin.dependsOn(generateProto)
compileTestKotlin {
kotlinOptions {
jvmTarget = '1.8'
javaParameters = true
}
}
tasks.withType(JavaExec) {
classpath += configurations.developmentOnly
jvmArgs('-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
}
sourceSets {
main {
java {
srcDirs 'build/generated/source/proto/main/grpc'
srcDirs 'build/generated/source/proto/main/grpckt'
srcDirs 'build/generated/source/proto/main/java'
}
}
}
protobuf {
protoc { artifact = "com.google.protobuf:protoc:${protocVersion}" }
plugins {
grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" }
grpckt { artifact = "io.grpc:protoc-gen-grpc-kotlin:${grpcKotlinVersion}" }
}
generateProtoTasks {
all()*.plugins {
grpc {}
grpckt {}
}
}
}
问题:自生成自动生成存根以来,为了实现它,我缺少了什么?我是否需要io之外的更多渐变依赖关系。grpc:protoc gen grpc kotlin?我想不是。我的方向对吗?如果没有,我应该怎么做才能从Micronaut下载的演示项目中实现发送rpc方法。发射
注:当我尝试io的最新版本时。grpc:protoc gen grpc kotlin 0.2.1 gradle抱怨,所以我只使用0.1.2,这与官方示例中的相同。这对我来说不是问题,只要它与我的问题无关。
免责声明:最初在micronaut github中询问
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import com.google.protobuf.gradle.*
group = "store.service"
version = "0.0.1-SNAPSHOT"
buildscript {
dependencies {
classpath(kotlin("gradle-plugin", version = "1.4.20"))
classpath("com.google.protobuf:protobuf-gradle-plugin:0.8.14")
classpath("io.micronaut.gradle:micronaut-gradle-plugin:1.2.0")
}
}
plugins {
idea
kotlin("jvm") version "1.4.20"
kotlin("plugin.serialization") version "1.4.20"
id("com.google.protobuf") version "0.8.14"
id("com.github.johnrengelman.shadow") version "6.1.0"
id("io.micronaut.application") version "1.2.0"
}
micronaut {
runtime("netty")
testRuntime("junit5")
processing {
incremental(true)
annotations("store.service.*")
}
}
application {
mainClass.set("store.service.App.java")
}
java {
sourceCompatibility = JavaVersion.toVersion("1.8")
targetCompatibility = JavaVersion.toVersion("1.8")
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
/*
8 Generating a Micronaut Application's Native Image with GraalVM
annotationProcessor("io.micronaut:micronaut-graal")
*/
implementation("io.micronaut:micronaut-validation")
implementation("io.micronaut:micronaut-runtime")
implementation("io.micronaut.grpc:micronaut-grpc-server-runtime:2.2.0")
implementation("io.micronaut.mongodb:micronaut-mongo-reactive:3.1.0")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.4.2")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-protobuf:1.0.1")
implementation("io.grpc:grpc-protobuf-lite:1.33.1")
implementation("io.grpc:grpc-protobuf:1.33.1")
implementation("io.grpc:grpc-kotlin-stub-lite:0.2.1")
implementation("io.grpc:grpc-netty:1.33.1")
implementation("com.google.protobuf:protobuf-java:3.14.0")
implementation("com.google.guava:guava:30.0-jre")
implementation("javax.annotation:javax.annotation-api:1.3.2")
implementation("org.slf4j:slf4j-simple:2.0.0-alpha1")
testImplementation("io.kotest:kotest-runner-junit5-jvm:4.2.5")
}
tasks {
withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
}
}
withType<Test> {
useJUnitPlatform()
}
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.11.4"
}
plugins {
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:1.25.0"
}
id("grpckt") {
artifact = "io.grpc:protoc-gen-grpc-kotlin:0.2.0:jdk7@jar"
}
}
generateProtoTasks {
ofSourceSet("main").forEach {
it.plugins {
id("grpc")
id("grpckt")
}
}
}
}
在您的GrpcdemoServiceGrpcK中,您会找到您的实例库。从这个实例库实现一个具体的grpc服务。
我对这个也有一些问题。
我认为您真正想要做的是实现生成并驻留在GrpcKt文件中的ImplBase,而不是整个对象本身
我在这里开始了一个示例,您可以遵循:https://github.com/FerhatBahceci/store-service/blob/master/build.gradle.kts
https://github.com/FerhatBahceci/store-service/blob/master/src/main/kotlin/store/service/store/StoreService.kt
我设法通过.proto文件生成了类,但它们在构建中。 我希望在main中生成类,因为当我要扩展存根时,不可能实现这些方法。 瞧: 文件.proto: proto文件在主文件夹中。 有人知道怎么解决吗?
我为数据类创建了一个var扩展属性,如下所示: 但是,当我尝试将“Val”重新分配给此行中的新值时,编译器会抱怨“Val无法重新分配”: 我真的不明白为什么会这样??我有一个“var”位图属性而不是“val”,那么问题是什么?更重要的是,什么是解决方案或替代方案?
go版本:go版本go1.14 linux/amd64 go.mod 我正在运行以下命令: 从
我有一个裸机kubernetes集群。我应用了这样的kubernetes nginx部署:kubectl应用-fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/baremetal/deploy.yaml 并添加了这个入口资源: 我的入口资源: 但
我将JAVA\u HOME变量设置为follow path:/usr/lib/jvm/jdk11,当我放置以下命令:JAVA-version时,它显示当前版本,echo$JAVA\u HOME指示上述路径。当我启动tomcat时,会出现以下错误消息:既没有定义JAVA\u HOME,也没有定义JRE\u HOME变量。 我把一切都设置好了,但是公猫找不到它。
问题内容: 我们可以从SQL中的函数调用存储过程吗?什么原因? 问题答案: 是的。 您可以进行一些修改,但是不建议这样做,因为它会打开新的连接。