Kotlin nierozwiązane odniesienie w IntelliJ


93

Zacząłem od samouczka do nauki Kotlina w IntelliJ.Kiedy próbowałem uruchomić przykład tj

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

Wykonywanie jest zawieszone z tym komunikatem Error:(5, 5) Kotlin: Unresolved reference: println Po raz pierwszy używam IntelliJ.Nigdy też nie pracowałem nad Javaprojektem.Czy czegoś mi brakuje?

Edycja: widziałem już inne pytanie, odpowiedź nie dotyczy mojej sytuacji.


Wersja Intellij IDEA? Jaka wersja wtyczki Kotlin jest zainstalowana?
D3xter

Którą opcję wybrałeś w oknie dialogowym środowiska uruchomieniowego Kotlin?
yole

Właśnie zainstalowałem go wczoraj.
IDEA

Tak, otrzymuję to również w przykładzie „Hello world” przy użyciu Gradle i Netbeans. Konstrukcja gradle działa. Wygląda też na problem z wtyczką w Netbeans. Niestety, nie ma ostatnich aktualizacji wtyczki Netbeans
będzie

Odpowiedzi:


92

Twoja wtyczka Intellij IDEA i środowisko uruchomieniowe / kompilator Kotlin, których używasz w projekcie, muszą być zgodne. Na przykład, jeśli wtyczka IDE to Beta 1, ale twój projekt Gradle / Maven używa M12, będziesz mieć problemy dokładnie tak, jak opisałeś. Więc sprawdź, czy wszystko się zgadza.

Jeśli nadal masz problemy, w przypadku niektórych starszych wtyczek musisz wyczyścić pamięci podręczne w Intellij IDEA (menu plików, Wyczyść pamięci podręczne i uruchom ponownie, wybierz opcję ponownego uruchomienia).


Połączenie czyszczenia pamięci podręcznych, aktualizacji Android Studio i wtyczki Kotlin naprawiło to za mnie. Dziękuję
user1405990

Witam ponownie, ze jakiś czas rozważyć rzeczy i trochę Kotlin google-ing - Nie sądzę, że przyczyną jest tutaj w plugin-ów per se . println znajduje się w pakiecie kotlin.io . JAR Kotlin-stdlib zawiera plik „kotlin.io”. Więc nie ma problemu na powierzchni. I wyraźnie włączone kotlin.io * - Result.: Unresolved reference: io. Jako archiwum JAR, uchwała referencyjna powinna dotyczyć rzeczy przedszkolnych. Więc co tam!??
będzie

Jestem z powrotem ... Netbeans ludzie mogą również „fix” to - kropla cache NetBeans użytkownika. Możesz zobaczyć lokalizację katalogu pamięci podręcznej Netbeans, klikając pole Pomoc / Informacje. Wyczyść - Zatrzymaj Netbeans - Upuść pamięć podręczną - Uruchom ponownie Netbeans - Przebuduj! Volia .
będzie

Jeśli widzisz ten problem tylko w pliku kompilacji Gradle, ale nie w plikach źródłowych projektu, może to pomóc: discuss.kotlinlang.org/t/ ...
AlexO

25

Jeśli ktoś się na to natknie i NIGDY Invalidate Cache aniUpdate Kotlin's Version pracy:

1) Po pierwsze, upewnij się, że możesz go zbudować spoza środowiska IDE. Jeśli używasz gradlena przykład:

gradle clean build

Jeśli wszystko pójdzie dobrze, praca w Twoim środowisku jest dobra Kotlin.

2) Aby naprawić kompilację IDE, wypróbuj następujące rozwiązania :

Struktura projektu -> {Wybierz moduł} -> Kotlin -> FIX

Zgodnie z sugestią członka JetBrain tutaj: https://discuss.kotlinlang.org/t/intellij-kotlin-project-screw-up/597


13
Używam Android Studio. Nie mam opcji „Kotlin” w strukturze mojego projektu> moduły. Jakieś pomysły?
AutonomousApps

4
nawet nie widzę tej opcji kotlin po wybraniu modułów ... używając intellij przedsiębiorstwa, a kotlin jest najwyraźniej już skonfigurowany, kiedy klikam narzędzia -> kotlin -> configure
heug

23

W moim przypadku była to źle skonfigurowana instancja IntelliJ.

Struktura projektu -> SDK -> Usuń i ponownie dodaj Java SDK


To był mój problem po usunięciu OpenJDK i zainstalowaniu Oracle JDK. Dzięki.
Patrik Stas

To rozwiązało mój problem z IntelliJ 2019.3 i OpenJDK 11. Musiałem tylko usunąć i ponownie dodać SDK.
z11i

10

Wpadłem na ten problem. Musiałem dodać następujące elementy do mojego build.grade:

apply plugin: 'kotlin-android'


8

Ok, byłem tu kilka razy i nie do końca jestem pewien, jak i dlaczego tak się dzieje, ale czytanie sugeruje, że jest to niezgodność Kotlin / JVM. Wypróbowałem wiele rzeczy wymienionych na tej stronie, ale nie bez całkowitego sukcesu. To był rodzaj symptomu, który IDE wyświetlał w panelu komunikatów po próbie uruchomienia testów przez IDE. Jednak panel kodu nie ma czerwonych linii wskazujących, że nie można znaleźć ani zaimportować modułów ani nic nie w porządku.

wprowadź opis obrazu tutaj

Mój projekt (w momencie pisania tego) to projekt klasy 4.10.2 kotlin 1.3 w IntelliJ (IntelliJ IDEA 2018.2.5 (Ultimate Edition) Build # IU-182.4892.20, zbudowany 16 października 2018)

Na początek jednak unieważniłem pamięci podręczne i uruchomiłem ponownie. Następnie uruchomiono gradle clean build. Po przebudowie projekt nadal nie ma radości. Wszedłem do ustawień projektu i zauważyłem, że wersje kompilatora nie są ustawione na java 8, ustawiłem wersję Compiler / Kotlin / Target JVM i Compiler / Java / Project Byte Code na 1.8 / 8 (patrz poniżej), a następnie przeprowadziłem testy w IDE i wracamy do pracy! Odniesienia rozwiązane w moim przypadku.

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj


Miałem podobny problem, ale musiałem też zmienić moduły modułów na odpowiednią docelową wersję JVM
Jake Walsh,

4

Dla mnie było to spowodowane brakiem bibliotek Gradle Libraries w strukturze projektu.

Po prostu dodaj build.gradle: apply plugin: 'idea'

A potem biegnij: $ gradle idea

Po tym gradle odbuduje biblioteki zależności i referencje zostaną rozpoznane!


Ten jest pomocny i działał z powodu braku bibliotek klas
Kaushik Burkule

3

Możliwym rozwiązaniem dla samodzielnych projektów Kotlin jest jawne dołączenie standardowych bibliotek Kotlin do projektu głównego.

Aby to zrobić w IntelliJ IDEA:

  • naciśnij Ctrl + Shift + A (Wyszukaj akcje lub opcje)
  • wpisz "Konfiguruj kotlin w projekcie" i pozwól, aby zawierał standardowe biblioteki

3

Mój problem został rozwiązany przez dodanie kotlinnastępujących

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 (czysty kotlin)

Mój błąd został wyrzucony tutaj, ponieważ Android Studio tworzy mój moduł domeny jako czysty moduł Java i zastosowałem wtyczkę jako java, a ja użyłem go w moim module prezentacji, który jest modułem Android / Kotlin

Android Studio znajduje i importuje ścieżkę pakietu, ale niezgodność nie pozwala na kompilację.

Wystarczy zdjąć apply plugin: 'java'i przełączyć na kotlin w następujący sposób

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 {
    ..
}

Myślę, że to będzie pomocne


1

Miał to samo z IDEA 14.1.5, Kotlin v.1.0.0-beta-1038-IJ141-17.
Kotlin otrzymuje swój własny wpis na liście (jak Java) podczas tworzenia nowego projektu, ale jedyna działająca konfiguracja to:

Nowy | Projekt | Java | „Kotlin (Java)” (upewnij się, że masz skonfigurowany Project SDK)
użyj biblioteki: Utwórz, „Kopiuj do: lib”.


1

Próbowałem wszystkiego: wyczyść foldery kompilacji, uruchom gradle clean build, wykonaj AS unieważnij pamięć podręczną (x2), ponownie zainstaluj wtyczkę Kotlin, zrestartuj komputer.

Ale w końcu po zrobieniu tego wszystkiego nadal nie działało, ale również usunięcie z projektu build.gradletej linii apply plugin: 'kotlin-android-extensions':, gradle sync, a następnie ponowne dodanie zadziałało


1

Otrzymałem również ten błąd, ale rozwiązałem to, korzystając z poniższej koncepcji.

  1. Uruchom ponownie edycję społecznościową intellij idea.
  2. Następnie przejdź do prawego rogu, aby ustawić konfigurację dla java.

wprowadź opis obrazu tutaj

  1. wybierz ustawienia konfiguracji dla wszystkich modułów. następnie ponownie uruchom kod. To będzie działać.

Ten błąd występuje z powodu nieprawidłowej konfiguracji języka Java.


2
Przykro mi, ale 2. nie jest jasne. Nie mogłem znaleźć „prawego rogu”
Deunz

1

Czasami może się to zdarzyć, ponieważ próbujesz użyć projektu z niekompatybilnymi wersjami wtyczki Kotlin w Gradle z wtyczką w swoim IDE. Sprawdź wersje org.jetbrains.kotlin.jvm i innych wtyczek Kotlin w build.gradle oraz wersję zainstalowanej wtyczki kotlin w swoim IDE i spróbuj zrobić to podobnie:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj


0

Przydarzyło mi się dzisiaj.

Mój problem polegał na tym, że miałem otwartych zbyt wiele kart (nie wiedziałem, że są otwarte) z kodem źródłowym.

Jeśli zamkniesz wszystkie karty, być może uda ci się rozmylić IntelliJ z poprawnym indeksowaniem zależności


Właściwie to ma sens, powodem, dla którego otrzymujesz wynik -ngt, jest to, że nie wyjaśniłeś tego dobrze. Jeśli some1 ma dwa otwarte projekty w IDE, powiedzmy jeden z Gradle i jeden z Maven; uruchomienie jednego z projektów może doprowadzić do nierozwiązanego odwołania.
HA S

0

Unieważnienie pamięci podręcznych i aktualizacja wtyczki Kotlin w Android Studio załatwiały sprawę.


0

Miałem ten problem, ponieważ próbowałem ustawić konfiguracje bibliotek wieloplatformowych.

Usunąłem wszystkie zestawy źródłowe wraz z ich zależnościami z pliku „build.gradle”, ale zachowałem „wspólny” zestaw źródeł.

Natywny działał dobrze, ale maszyna JVM nie była w stanie zbudować i pokazała błąd.

Ostatecznie rozwiązaniem było nie usuwanie zbioru źródłowego maszyny JVM ani jej zależności


0

Kolejną rzeczą, którą chciałbym dodać, jest to, że musisz wybrać View -> Tool Windows -> Gradle zanim będziesz mógł uruchomić projekt za pomocą Gradle.

Jeśli używasz Gradle, projekt buduje się i działa normalnie, ale używając IntelliJ tak nie jest, to może rozwiązać problem.


0

Miałem ten problem, ponieważ linter drukował, że mój obiekt był wystąpieniem, Foopodczas gdy kompilator nie mógł zdefiniować jego typu i uznać, że jest to Anyobiekt podobny do obiektu (w moim przypadku był bardziej złożony, linter pokazuje błąd w poniższym kodzie, ale pomysł jest tutaj):

    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.

Aby to naprawić, musiałem rzucić mój obiekt:

val foo = test() as Foo


-1

Czasami w podobnych sytuacjach (nie sądzę, że to twój problem, ponieważ twoja sprawa jest bardzo prosta) warto sprawdzić pakiet plików kotlin.

Jeśli masz plik Kotlin w tym samym pakiecie i umieściłeś tam kilka klas i przegapiłeś deklarację pakietu, wygląda to w IntelliJ, że masz klasy w tym samym pakiecie, ale bez definicji pakietu, IntelliJ pokazuje:

Błąd: (5, 5) Kotlin: Nierozwiązane odniesienie: ...


-1

Najprostsze rozwiązanie:

Narzędzia-> Kotlin-> Konfiguruj Kotin w projekcie

Głosuj za, jeśli uznany za Przydatny.


Nic nie robi: wszystkie moduły z plikami Kotlin są skonfigurowane
Deunz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.