如何从build.gradle加载Kotlin应用程序的配置文件?

如何从build.gradle加载Kotlin应用程序的配置文件?,gradle,kotlin,dropwizard,Gradle,Kotlin,Dropwizard,我正在尝试做一个简单的kotlin+dropwizard应用程序 我关注了一些在线信息,包括这一条 因此,经过一些修改后,我创建了一个具有build.gradle.kts的应用程序,如下所示: plugins { application kotlin("jvm") id("com.github.johnrengelman.shadow") version "4.0.3" } application { mainClassName = "path.MyApplic

我正在尝试做一个简单的kotlin+dropwizard应用程序

我关注了一些在线信息,包括这一条

因此,经过一些修改后,我创建了一个具有build.gradle.kts的应用程序,如下所示:

plugins {
    application
    kotlin("jvm")
    id("com.github.johnrengelman.shadow") version "4.0.3"
}

application {
    mainClassName = "path.MyApplication"
}


dependencies {
    implementation("... dependencies ...")
}

val shadowJar: ShadowJar by tasks

shadowJar.apply {
    mergeServiceFiles()
    manifest.attributes.apply {
        put("Main-Class", application.mainClassName)
    }
}

tasks.named<JavaExec>("run") {
    args("server", "local.yml")
}
问题是

当我执行gradlew运行时,会出现以下错误:

  * Failed to parse configuration; Cannot construct instance of `MyConfiguration` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: UNKNOWN; line: -1, column: -1]
我真的不知道为什么会出现这个错误,或者我的local.yml上是否有问题

我的local.yml文件包含以下内容:

serviceName: Kotlin Calculator
讽刺的是,当我更改:for=,我的应用程序就会运行。


知道这有什么问题吗?

MyConfiguration类应该有一个空构造函数。使serviceName成为属性

class MyConfiguration() : Configuration(){

  @NotNull
  val serviceName: String = ""
}
serviceName: Kotlin Calculator
class MyConfiguration() : Configuration(){

  @NotNull
  val serviceName: String = ""
}