intellij-idea Kotlin @Serializable 注解在IntelliJ中不起作用

ia2d9nvy  于 2022-11-01  发布在  Kotlin
关注(0)|答案(5)|浏览(277)

我尝试在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)。

um6iljoc

um6iljoc1#

您需要添加:

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_dependencies

3lxsmp7m

3lxsmp7m2#

问题是我使用idea插件来生成IntelliJ项目。当我通过打开build.gradle.kts文件来导入项目时,一切都按预期运行。
我之所以没有以这种方式导入它,是因为我禁用了Gradle支持,所以当我打开build.gradle.kts文件时,它没有导入项目,只是在编辑器中打开了它。点击cmd + shift + a并搜索Gradle,然后将开关切换到On。在重新启动IntelliJ之后,您应该能够从build.gradle.kts文件导入项目,并且您应该可以开始了。

vlf7wbxs

vlf7wbxs3#

在我的例子中,我需要在 * 项目级别 * 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()
mwyxok5s

mwyxok5s4#

在我的例子中,maintest目录在IntelliJ中不再是“模块”。不确定发生了什么...
您可以转到menu -> File -> Project Structure...来验证这一点
modules左侧导航下,maintest应该是父应用下的模块。如果不是,最简单的修复方法是

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

否则,你也可以通过上面显示的Project structure...重新创建你的模块。然后在你的父应用下选择+ New Module,然后选择Java,并选中Kotlin作为模块类型。对maintest目录都这样做(确保在后者中你的目录被标记为“test”源目录)

zpgglvta

zpgglvta5#

您是否尝试过转到“文件-〉使缓存无效”?

相关问题