24

尝试在 IntelliJ 中构建 Kotlin/Ktor 应用程序时,出现多个表单警告

Warning:(276, 6) Kotlin: This class can only be used with the compiler argument '-Xuse-experimental=kotlin.Experimental'

是输出。警告指的是

@UseExperimental(KtorExperimentalLocationsAPI::class)

所以我希望通过将Settings -> Build -> Compiler -> Kotlin Compiler -> Additional command line parameters设置为-version -Xuse-experimental=kotlin.Experimental来满足警告。(-version已经存在)。但是仍然会产生警告。我如何满足它?期待中的感谢。

4

5 回答 5

28

您在项目中使用 Maven 还是 Gradle?我在使用 Gradle 时遇到了同样的问题,但我可以通过将-Xuse-experimental=kotlin.Experimental放在build.gradle文件中的tasks.withType中来删除警告。

对于KtorExperimentalLocationsAPI,您可以尝试:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions.freeCompilerArgs += ["-Xuse-experimental=io.ktor.locations.KtorExperimentalLocationsAPI"]
}
于 2018-12-14T23:06:29.787 回答
11

在当前的 Kotlin 版本(1.5)中,您可以通过添加 @OptIn 注释来使用任何实验库

@OptIn(ExperimentalCoroutinesApi::class)

但是,选择加入机制本身是实验性的,要使用它,您需要添加一个编译器参数。在 Kotlin Multiplatform 中最惯用的方法是:

kotlin.sourceSets.all {
    languageSettings.useExperimentalAnnotation("kotlin.RequiresOptIn")
}
于 2021-07-04T16:51:10.917 回答
4

编辑Gradle 6.5.1Ktor 1.3.2。@jay-janez 的回答如下:

tasks.withType(KotlinCompile::class).all {
    kotlinOptions.freeCompilerArgs += "-Xuse-experimental=io.ktor.util.KtorExperimentalAPI"
}
于 2020-07-08T15:57:35.333 回答
2

老问题,但已经发生了一些变化。

-Xuse-experimental已被替换-Xopt-in请参阅文档

对于 Grade Kotlin DSL,您也可以使用以下语法:

tasks.withType<KotlinCompile> {
    kotlinOptions.freeCompilerArgs = listOf(
        "-Xopt-in=io.ktor.util.KtorExperimentalAPI"
    )
}
于 2021-05-12T18:48:15.953 回答
0

转到您的app/build.gradle文件并在底部添加以下任务

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        freeCompilerArgs += "-Xopt-in=io.ktor.util.KtorExperimentalAPI"
    }
}
于 2022-02-12T12:24:54.070 回答