Как настроить сериализацию в IntelliJ / Kotlin? - PullRequest
0 голосов
/ 31 марта 2020

Приношу свои извинения за вопрос noob: я пытаюсь проверить, как сериализация работает в Kotlin.

С этой целью я создал проект Gradle, подобный этому:

enter image description here

отредактировал сгенерированный build.gradle.kts, добавив всего одну строку

plugins {
    java
    kotlin("jvm") version "1.3.71"
    id("org.jetbrains.kotlin.plugin.serialization") version "1.3.71"
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    testCompile("junit", "junit", "4.12")
}

configure<JavaPluginConvention> {
    sourceCompatibility = JavaVersion.VERSION_1_8
}
tasks {
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
}

и создал этот Kotlin исходный файл:

import kotlinx.serialization.*
import kotlinx.serialization.json.*

@Serializable
data class Data(val a: Int, val b: String = "42")

Но когда я строю этот проект, я получаю эту ошибку:

Unresolved reference: kotlinx

Если я удаляю первые две ошибочные строки, я получаю эту ошибку вместо:

Cannot access 'Serializable': it is internal in 'kotlin.io'

Что я здесь делаешь неправильно? (Также нужно ли Gradle использовать сериализацию в IntelliJ / Kotlin 1.3.71?)

1 Ответ

0 голосов
/ 31 марта 2020

Наконец-то разобрался. A BUG в IntelliJ IDEA помешал моему устранению неполадок.

Оставляя ответ для любого, кто может найти этот вопрос через Google:

build.gradle.kt должно быть

plugins {
    java
    kotlin("jvm") version "1.3.71"
    kotlin("plugin.serialization") version "1.3.71"
}

repositories {
    // artifacts are published to JCenter
    jcenter()
}

dependencies {
    implementation(kotlin("stdlib", org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION))
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0")
}

Официальные инструкции содержат ошибочную версию этого: нет org.jetbrains.kotlin.config.

Однако этого недостаточно. Я выполнял команду «Выполнить» из файла Kotlin. Это приводит к другой ошибке

error: unable to evaluate script, no scripting plugin loaded

из-за неприятной ошибки (например, я потратил ЧАСОВ и ЧАСОВ , пытаясь выяснить, что я делал неправильно) https://youtrack.jetbrains.com/issue/KT-37814

Необходимо явно выполнить «Build project».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...