Kotlin @Serializable 注释在 IntelliJ 中不起作用

Vik*_*ing 17 intellij-idea kotlin

我正在尝试@Serializable在 Kotlin 中使用注释。我可以使用 Gradle 构建项目,但它在 IntelliJ 中显示为红色,当我将鼠标悬停在@Serializable注释上时,会显示一条消息:

 kotlinx.serializable compiler plugin is not applied to the module, so this
 annotation would not be processed. Make sure you've setup your buildscript
 correctly and re-import project.
Run Code Online (Sandbox Code Playgroud)

我的build.gradle.kts文件看起来像这样:

plugins {
    id("org.jetbrains.kotlin.jvm").version("1.3.50")
    id("org.jetbrains.kotlin.plugin.serialization") version "1.3.50"
    idea
}

repositories {
    jcenter()
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation(group = "com.charleskorn.kaml", name = "kaml", version = "0.12.0")

    testImplementation("org.jetbrains.kotlin:kotlin-test")
    testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}
Run Code Online (Sandbox Code Playgroud)

我安装了最新版本的 Kotlin 插件 (1.3.50)。

Nic*_*zzi 17

就我而言,我需要在项目级gradle添加 jvm 插件

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.7.20' apply false   
}
Run Code Online (Sandbox Code Playgroud)

然后在应用程序 gradle中我添加了

plugins {
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.7.20'
}
Run Code Online (Sandbox Code Playgroud)

通过此配置,我可以看到:

Record.serializer()
Run Code Online (Sandbox Code Playgroud)


小智 6

您需要添加:

plugins {
    application
    kotlin("jvm") version "1.4.21"
    kotlin("plugin.serialization") version "1.4.21"
}
Run Code Online (Sandbox Code Playgroud)

这是由 JetBrains 在这里指定的,链接到 gradle:

https://github.com/Kotlin/kotlinx.serialization#setup

https://ktor.io/docs/kotlin-serialization.html#add_dependencies


Vik*_*ing 5

所以我让这个工作了。问题是我正在使用该idea插件生成 IntelliJ 项目。当我通过打开文件导入项目时build.gradle.kts,一切都按预期进行。

我一开始没有以这种方式导入它的原因是因为我禁用了 Gradle 支持,所以当我打开文件时build.gradle.kts,它没有导入项目,只是在编辑器中打开它。如果遇到这种情况,请点击cmd+ shift+a并搜索Gradle,然后将该开关切换到On。重新启动 IntelliJ 后,您应该能够从build.gradle.kts文件导入项目,然后就可以开始了。