当前位置: 首页 > 知识库问答 >
问题:

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

吴凯
2023-03-14

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

我关注了一些在线信息,包括这个 https://dev.to/tagmg/step-by-step-guide-to-building-web-api-with-kotlin-and-dropwizard

因此,经过一些修改后,我创建了一个带有build.gradle的应用程序。KT是这样的:

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")
}

在我的应用程序中,我有这样的东西:

类 我的应用程序 : 应用程序() {

companion object {
    @JvmStatic fun main(args: Array<String>) {
        MyApplication().run(*args)
    }
}

override fun run(configuration: MyConfiguration, environment: Environment) {

    val myResource = MyResource() //endpoints with dropwizard
    environment.jersey().register(myResource)
    }

} 

在我的配置中

class MyConfiguration(val serviceName: String
) : Configuration(){



}

问题是...

当我运行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上有什么问题

这是我的本地人。yml文件包含以下内容:

serviceName: Kotlin Calculator

具有讽刺意味的是,当我更改: for=时,我的应用程序会运行。

你知道这有什么问题吗?

共有1个答案

彭琛
2023-03-14

类应具有空构造函数。使服务名称成为属性。

class MyConfiguration() : Configuration(){

  @NotNull
  val serviceName: String = ""
}
 类似资料:
  • 本文向大家介绍android-gradle 如何配置build.gradle文件,包括了android-gradle 如何配置build.gradle文件的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我正在将一些web应用程序从log4j1.12迁移到Log4j2。由于公司政策,我们的log4j。xml文件位置在应用服务器中配置为URL,应用程序必须使用JNDI获取它们。我们实现了一个,它允许我们以这种方式初始化log4j基础结构: 但是,随着log4j2api的更改,这将无法再使用。Log4j2提供了lo4j2web。jar模块,它使用初始化库。这将调用,负责获取配置文件的URI。 有什么方

  • 奇怪的事情发生在我身上。我不知道如何解决它,Spring云配置不能加载本机或云配置文件,除非它的文件名是application.yml/application.properties。 以下代码是我的配置: 波姆。xml: 配置服务器: 应用yml: 共享文件夹结构器: 资源 --shared --application-dev.yml --sms-dev.yml 它看起来不错,运行良好,没有错误,

  • 使用Gradle 4.4.1和静态编程语言-DSL,我想在我的静态编程语言1.2.20项目中配置实验性的静态编程语言协程。这被证明是出奇困难的。 官方静态编程语言留档本身只提到Groovy DSL的Gradle,而不是静态编程语言。 Kotlin DSL项目有一个不起作用的协同路由示例。可能是针对较旧的Gradle版本(该脚本中的Kotlin版本为1.1.51,这本身就是可疑的)。 PS:甚至In

  • 环境 我使用MacOSXYosemite,MAMP版本(3.0.7.3)。 文档根 我已经将文档根目录设置为指向我的文件夹。 许可证 有些人建议我完全chmod我的laravel文件夹,我也通过运行来实现这一点。 测试 转到:http://localhost:8888/,我得到的只是空白 我怎么才能让这个工作?

  • 问题内容: 好的,所以我不想在这里展开一场圣战,但是我们正在努力巩固处理应用程序配置文件的方式,我们正在努力决定采用哪种最佳方法。目前,我们分发的每个应用程序都在使用其自己的临时配置文件,无论是属性文件(ini样式),XML还是JSON(目前仅在内部使用!)。 目前,我们的大多数代码是Java,因此我们一直在研究Apache Commons Config ,但是我们发现它非常冗长。我们还研究了XM