Нерешенная ссылка Котлина в IntelliJ

Я начал с учебника по изучению Kotlin в IntelliJКогда я попытался запустить пример, т.е.

fun main(args: Array<String>) {
 println("lol")
}

Исполнение приостановлено с этим сообщениемError:(5, 5) Kotlin: Unresolved reference: printlnЭто первый раз, когда я использую IntelliJ. Я никогда не работал над Java Проект тоже. Я что-то упустил?

Изменить: я уже видел другой вопрос. Ответ не подходит для моей ситуации.

32 ответа

Решение

Ваш плагин Intellij IDEA и среда выполнения / компилятор Kotlin, которые вы используете в проекте, должны совпадать. Например, если плагин IDE - бета-версия 1, но ваш проект Gradle/Maven использует M12, у вас будут проблемы в точности так, как вы описали. Поэтому убедитесь, что все выстраивается.

Если у вас все еще есть проблемы, с некоторыми старыми плагинами вам нужно очистить кеши в Intellij IDEA (меню "Файл", "Очистить кеши и перезапустить", выберите опцию перезапустить).

Если кто-то натыкается на это и ни Invalidate Cache или же Update Kotlin's Version Работа:

1) Во-первых, убедитесь, что вы можете создать его снаружи IDE. Если вы используете gradle, например:

gradle clean build

Если все идет хорошо, значит, с вами хорошо работать Kotlin,

2) Чтобы исправить сборку IDE, попробуйте следующее:

Структура проекта -> {Выбрать модуль} -> Kotlin -> FIX

По предложению члена JetBrain здесь: https://discuss.kotlinlang.org/t/intellij-kotlin-project-screw-up/597

В моем случае это был неправильно настроенный экземпляр IntelliJ.

Структура проекта -> SDK -> Удалить и снова добавить Java SDK

Наткнулся на эту проблему. Мне пришлось добавить следующее в мой build.grade:

apply plugin: 'kotlin-android'

Хорошо, я был здесь несколько раз и не совсем уверен, как и почему это происходит, но чтение предполагает несоответствие Kotlin/JVM. Я попробовал несколько вещей, упомянутых на этой странице, но не без полного успеха. Это было своего рода симптомом, который IDE отображал на панели сообщений после попытки запуска тестов через IDE. Однако на панели кода нет красных линий, указывающих на то, что модули не могут быть найдены или импортированы или что-то не так.

введите описание изображения здесь

Мой проект (на момент написания этой статьи) является проектом Grade 4.10.2 kotlin 1.3 в IntelliJ (IntelliJ IDEA 2018.2.5 (Ultimate Edition), сборка #IU-182.4892.20, построена 16 октября 2018 года)

Для начала, я аннулировал кэши и перезапустил. Затем запустил чистую сборку. После перестройки проекта до сих пор нет радости. Я вошел в настройки проекта и заметил, что версии компилятора не были установлены на java 8, я установил версию компилятора /Kotlin/Target JVM и байт-код компилятора /Java/Project на 1.8/8 (см. Ниже), а затем запустил некоторые тесты в IDE и мы снова в деле! Ссылки разрешены в моем случае.

введите описание изображения здесь

введите описание изображения здесь

Возможное решение для автономных проектов Kotlin - включить стандартные библиотеки Kotlin явно в корневой проект.

Для этого в IntelliJ IDEA:

  • нажмите Ctrl+Shift+A (Поиск действий или параметров)
  • введите "Настройка kotlin в проекте" и включите в него стандартные библиотеки

Иногда это могло произойти из-за того, что вы пытаетесь использовать проект с несовместимыми версиями плагина Kotlin в Gradle с плагином в вашей IDE. Проверьте версии org.jetbrains.kotlin.jvm и других плагинов Kotlin в build.gradle, а также версию установленного плагина kotlin в вашей среде IDE и попробуйте сделать его похожим:

Для меня это произошло из-за того, что в структуре проекта отсутствовали библиотеки Gradle.

Просто добавьте в build.gradle: apply plugin: 'idea'

А затем запустите: $ gradle idea

После этого Gradle перестраивает библиотеки зависимостей и ссылки распознаются!

Моя проблема была решена путем добавления kotlin следующим образом

presentation.gradle (app.gradle)

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android' // here

apply plugin: 'kotlin-android-extensions' // and here

android {
    ...
}

dependencies {
    ...
}

domain.gradle (чистый котлин)

Моя ошибка была сброшена здесь, потому что Android Studio создал мой модуль домена как чистый модуль Java и применил плагин как java, и я использовал его в своем модуле презентации, который является модулем Android/Kotlin

Android Studio находит и импортирует путь пакета, но несовместимость не позволяет выполнить сборку.

Просто удали apply plugin: 'java' и swith к kotlin как следовать

apply plugin: 'kotlin' // here is

dependencies {
    ...
}

...

data.gradle

apply plugin: 'com.android.library'

apply plugin: 'kotlin-android' // here

apply plugin: 'kotlin-android-extensions' // and here 

android {
    ...
}

dependencies {
    ..
}

Я думаю, что это будет полезно

Проверьте и установите обновления Android Studio. Это решит проблему.

Попробовав несколько шагов, это сработало для меня.

Щелкните правой кнопкой мыши проект> Открыть настройки модуля> Настройки проекта> Модули
. Я удалил другие конфигурации и оставил только одну, т.е. "первыймикросервис - Котлин"

Из «Настройки»> «Сборка, выполнение, развертывание»> «Скомпилировать»> «Компилятор Kotlin».

Из «Настройки»> «Сборка, выполнение, развертывание»> «Скомпилировать»> «Компилятор Java».

Из «Настройки»> «Сборка, выполнение, развертывание»> «Инструменты сборки»> «Maven»> «Runner».

После выполнения RUN:
Maven очистить
Maven, скомпилировать
Maven, установить

Верхнее решение не работает для меня, после некоторых попыток метода удалить кеши IDEA вручную работает:

каталог кешей:

      ~/Library/Caches/JetBrains/<product><version> on macOS
~/.cache/JetBrains/<product><version> on Linux
%LOCALAPPDATA%\JetBrains\<product><version> on Windows

источник решения: проблемы с KTX

То же самое было с IDEA 14.1.5, Kotlin v.1.0.0-beta-1038-IJ141-17.
Kotlin получает свою собственную запись в списке (например, Java) при создании нового проекта, но единственная рабочая конфигурация была:

Новый | Проект | Java | "Kotlin (Java)" (убедитесь, что у вас также настроен Project SDK)
Использовать библиотеку: Создать, "Копировать в: lib".

Я тоже получал эту ошибку, но решил ее, используя приведенную ниже концепцию.

  1. Перезапустите свою версию сообщества intellij idea.
  2. После этого перейдите в правый угол, чтобы установить конфигурацию для java.

  1. выберите настройку конфигурации для всего модуля. затем повторно запустите код. Это будет работать.

Эта ошибка возникает из-за неправильной настройки java.

Я перепробовал все: очистить папки сборки, запустить gradle clean build, выполнить AS аннулировать кэш (x2), переустановить плагин Kotlin, перезагрузить компьютер.

Но, в конце концов, после всего этого все еще не работало, но делалось и удаление из проекта. build.gradle этой линии: apply plugin: 'kotlin-android-extensions'Градл синхронизирует, а затем повторное добавление работает

В моем случае все настройки были в порядке, и я сделал Invalidate Cache and restartи все же у меня была проблема. Я попробовал решение ниже и работал на меня.

  1. Нажмите crtl + shift + alt + s войти в структуру проекта.
  2. В настройках проекта выберите project.
  3. Затем в Project SDK щелкните свою версию Java и вместо этого выберите Kotlin.
  4. Запустите проект.
  5. Сделайте все от 1 до 4, но снова выберите свой jdk.
  6. Перезапустите свой проект.

Если вы используете @UtilityClass - lombok lib.

Котлин не дружит с этим.

Например: у вас есть класс Java с аннотацией @UtilityClass

      private final String hello = 'Hello'

Вы пытаетесь внедрить этот const в класс Kotlin, вы получите

      'Unresolved reference'

Решение: сделать поле статическим:

      private static final String hello = 'Hello'

#@UtilityClass #UnresolvedReference #Kotlin #Java

Код моего подмодуля сказал Kotlin: Unresolved reference: bouncycastle при сборке в IntelliJ.

Сборка командной строки сработала.

Пробовал все решения, но, наконец, создал новый проект, добавил подмодуль и скопировал код основного модуля и файл build.gradle. Затем сборка в IntelliJ снова работает.

Я думаю, что есть проблема с конфигурацией сборки, но где я не знаю.

То же самое было с IntelliJ IDEA 2021.3.3 .

  1. Убедитесь, что у вас установлена ​​последняя версия плагина kotlin для вашей IDE (Настройки -> Языки и рамки -> kotlin)

  2. Убедитесь, что ваша версия kotlin и цель jvm в вашем файле build.gradle совпадают с вашим проектом-> настройка -> модули-> Kotlin (для меня это была JVM 17 и kotlin 1.6)

  3. Если все еще есть проблемы, просто очистите кеши IDE:

    • Меню «Файл» -> аннулировать кеши... (отмечена опция VCS).

    • Если все еще есть проблемы, просто вручную удалите их в разделе~/Library/Caches/JetBrains/<product><version>

Я застрял на этой ошибке IDE на полдня. Это, безусловно, проблема, связанная с совместимостью встроенного плагина Kotlin, но если она не решена с помощью различных действий, описанных в предыдущих ответах, единственное решение, которое, похоже, работает, — это полностью УДАЛИТЬ (удалить кеш и плагины) и ПЕРЕУСТАНОВИТЬ. ИнтеллиДж. Вероятно, где-то в IDE скрываются какие-то старые плагины.

Что сработало для меня, так это щелкнуть правой кнопкой мыши проект > Maven > Перезагрузить проект.

У вас проблема с корневым файлом build.gradle.

  1. Проверьте версии org.jetbrains.kotlin:kotlin-gradle-plugin
  2. проверить версии com.android.tools.build:gradle

обновить эти версии

Я столкнулся с той же проблемой, но это была не проблема Intellij, а проблема сопоставления с новой версией Ktor, поэтому сначала вы можете проверить, нужно ли вам перенести зависимости с 1.6. * на Ktor 2.0. * на этом сайте. :

https://ktor.io/docs/migrating-2.html

В моем случае я пробовал все, чтобы очистить кеш, вручную удалить JAR-файлы зависимостей и перезагрузить зависимости Maven.

Проблема была решена после того, как я включил все дочерние и родительские POM для проекта:

  1. Перейти к

Настройки -> Сборка, выполнение, развертывание -> Инструмент сборки -> Maven -> Игнорируемые файлы

  1. Снимите отметку со всех игнорируемых файлов и повторите попытку.
  2. Синхронизировать зависимости Maven
  3. Очистите кеш и перезапустите IntelliJ (если вы все еще видите эту ошибку)

Случилось со мной сегодня.

Моя проблема заключалась в том, что у меня было слишком много открытых вкладок (я не знал, что они были открыты) с исходным кодом на них.

Если вы закроете все вкладки, возможно, вы не будете смешивать IntelliJ в правильной индексации зависимостей

У меня была эта проблема, потому что линтер печатал, что мой объект является экземпляром Foo тогда как компилятор не мог определить его тип и считать, что это Any объект вроде (в моем случае это было сложнее, ошибка показа линтера в приведенном ниже коде, но идея здесь):

    class Foo {
        val bar: Int = 0
    }

    fun test(): Any {
        return Foo()
    }

    val foo = test()
    foo.bar // <-- Linter consider that foo is an Instance of Foo but not the compiler because it's an Any object so it show the error at compilation.

Чтобы исправить это, мне пришлось применить свой объект:

val foo = test() as Foo

Самое простое решение:

Инструменты-> Котлин-> Настроить Котин в проекте

Проголосуйте, если сочтут полезным.

Иногда в подобных ситуациях (я не думаю, что это ваша проблема, потому что ваш случай очень прост) стоит проверить пакет файла kotlin.

Если у вас есть файл Kotlin в одном и том же пакете, и вы поместили туда некоторые классы и пропустили объявление пакета, то внутри IntelliJ вы увидите, что у вас есть классы в одном и том же пакете, но без определения пакета, IntelliJ покажет вам:

Ошибка:(5, 5) Котлин: Неразрешенная ссылка: ...

Сделайте недействительными кэши Intellij Idea и перезапустите: Файл -> Недействительные кэши... -> Выберите необходимые элементы и

Аннулирование кешей и обновление плагина Kotlin в Android Studio помогли мне.

Другие вопросы по тегам