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

问题描述 投票:0回答:6

我正在尝试在 Kotlin 中使用

@Serializable
注释。我可以使用 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.

我的

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

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

intellij-idea kotlin
6个回答
33
投票

您需要添加:

plugins {
    application
    kotlin("jvm") version "1.4.21"
    kotlin("plugin.serialization") version "1.4.21"
}

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

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

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


17
投票

就我而言,我需要在项目级别 gradle

添加jvm插件
plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.7.20' apply false   
}

然后在 app gradle 我添加了

plugins {
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.7.20'
}

通过此配置我可以看到:

Record.serializer()

5
投票

所以我成功了。问题是我正在使用

idea
插件来生成 IntelliJ 项目。当我通过打开
build.gradle.kts
文件导入项目时,一切都按预期工作。

我一开始没有以这种方式导入它的原因是因为我禁用了 Gradle 支持,所以当我打开

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


1
投票

如果您使用 Maven 进行构建,那么您需要

    <configuration>
        <compilerPlugins>
            <plugin>kotlinx-serialization</plugin>
        </compilerPlugins>
    </configuration>

如此处所述:https://github.com/Kotlin/kotlinx.serialization#maven

我已经从我的 pom.xml 中删除了该位,因为它从命令行编译得很好,但后来我在 IntelliJ 下遇到了这个错误


0
投票

就我而言,

main
test
目录不再是IntelliJ中的“模块”。不知道发生了什么...

您可以通过访问

menu -> File -> Project Structure...

来验证这一点

modules
左侧导航下,
main
test
应该是父应用程序下的模块。如果没有,最简单的修复方法是

  • 关闭您的项目
  • 删除.idea和.gradle目录
  • 选择
    Menu -> File -> New project from existing source...
    并导入为gradle项目

否则,您也可以通过转到上面所示的

Project structure...
来重新创建模块。然后在父应用程序下点击
+ New Module
,然后选择 Java,并选中 Kotlin 作为模块类型。对
main
test
目录执行此操作(确保您的目录在后者中标记为“测试”源目录)


0
投票

当我尝试使用与我的 Kotlin 版本不匹配的插件版本时,出现此错误:

plugins {
    id("org.jetbrains.kotlin.android") version "1.9.10" apply false
    // other plugins
    kotlin("plugin.serialization") version "1.9.23" apply false
}

一旦我将其更改为匹配并重新同步 Gradle,问题就消失了。

plugins {
    id("org.jetbrains.kotlin.android") version "1.9.10" apply false
    // other plugins
    kotlin("plugin.serialization") version "1.9.10" apply false
}
© www.soinside.com 2019 - 2024. All rights reserved.