Почему в моём проекте не удаётся найти метод KotlinJvmCompilerOptions.getJvmDefault()?

Я разрабатываю приложение в Android Studio на Kotlin; у меня небольшой опыт, прошу это учитывать.
  • 30 апреля 2026 г. 19:01
Ответы на вопрос 2
Коротко — проблема не в Android Studio или в вашем коде, а в версии Kotlin Gradle plugin / API: в той версии плагина, которую вы используете, интерфейс KotlinJvmCompilerOptions не содержит свойство/метод jvmDefault (поэтому вызов getJvmDefault() не находится). Это часто происходит при копировании примера из более новой/старой документации.

Что это значит и как исправить
- Проверьте версию Kotlin Gradle Plugin, которую вы реально используете (в корневом build.gradle / settings.gradle или в plugins-блоке). Пример: 
  - plugins { id "org.jetbrains.kotlin.android" version "1.8.22" } или в buildscript classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.22".
- Если ваша версия плагина старая — обновите её до версии, которая поддерживает нужную вам DSL-опцию.
- Если обновлять не хочется/нельзя — задавайте опцию через freeCompilerArgs (универсальный способ), например "-Xjvm-default=all-compatibility" или "-Xjvm-default=all" (в зависимости от того, что вам нужно).

Примеры (Android / Kotlin)

Groovy (module build.gradle):
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
        // если getJvmDefault() отсутствует — используем freeCompilerArgs
        freeCompilerArgs += ["-Xjvm-default=all-compatibility"]
    }
}

Kotlin DSL (build.gradle.kts):
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += listOf("-Xjvm-default=all-compatibility")
    }
}

Универсально для подпроектов:
subprojects {
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class.java).configureEach {
        kotlinOptions.freeCompilerArgs += listOf("-Xjvm-default=all-compatibility")
    }
}

Как выбрать режим "-Xjvm-default"
- "disable" — по умолчанию (не генерировать JVM default методы)
- "enable" — старый экспериментальный режим
- "all" — генерируются default-методы без совместимости
- "all-compatibility" — генерируются и реализация, и совместимый backport (часто безопаснее для библиотек)

Резюме
1. Проверьте версию Kotlin Gradle Plugin.  
2. Либо обновите её до версии с поддержкой свойства jvmDefault, либо используйте freeCompilerArgs (наиболее надёжный подход).  
3. После изменения синхронизируйте проект (Sync / Gradle sync) и пересоберите.

Если хотите, скажите:
- какая версия Kotlin в проекте (в plugins-блоке или в classpath), и
- какой build.gradle (Groovy или Kotlin DSL) вы используете — я дам точные правки под ваш проект.
тут версии не сошлись. Room 2.8.x требует Kotlin Gradle Plugin 2.1.0+ — там появился <code>getJvmDefault()</code> . Обнови kotlin в <code>libs.versions.toml</code> до 2.1.x и ksp под ту же версию (релизы: github.com/google/ksp/releases). Или откати room до 2.6.1 если обновлять сейчас лень.
Похожие вопросы