Kotlin ungelöste Referenz in IntelliJ

90

Ich begann mit dem Tutorial zum Erlernen von Kotlin in. IntelliJAls ich versuchte, das Beispiel auszuführen, dh

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

Die Ausführung wird mit dieser Meldung unterbrochen. Error:(5, 5) Kotlin: Unresolved reference: println Dies ist das erste Mal, dass ich IntelliJ verwende. Ich habe auch noch nie an einem JavaProjekt gearbeitet. Fehlt mir etwas?

Bearbeiten: Ich habe die andere Frage bereits gesehen. Die Antwort ist für meine Situation nicht gültig.

Anony-Maus
quelle
Version Intellij IDEA? Welche Version des Kotlin-Plugins ist installiert?
D3xter
Welche Option haben Sie im Kotlin-Laufzeitdialog ausgewählt?
yole
Ich habe es erst gestern installiert.
IDEA
Ja, ich bekomme dies auch im Beispiel "Hallo Welt" mit Gradle und Netbeans. Der Gradle Build funktioniert. Ich sehe auch wie ein Plug-In-Problem mit Netbeans aus. Leider gibt es keine aktuellen Updates für das Netbeans-Plugin
wird am

Antworten:

88

Ihr Intellij IDEA-Plugin und die Kotlin-Laufzeit / der Kotlin-Compiler, die Sie im Projekt verwenden, müssen übereinstimmen. Wenn das IDE-Plugin beispielsweise Beta 1 ist, Ihr Gradle / Maven-Projekt jedoch M12 verwendet, treten Probleme genau wie beschrieben auf. Überprüfen Sie also, ob alles in einer Linie liegt.

Wenn Sie immer noch Probleme haben, müssen Sie bei einigen älteren Plugins die Caches in Intellij IDEA löschen (Dateimenü, Caches löschen und neu starten, Option zum Neustart auswählen).

Jayson Minard
quelle
Eine Kombination aus Löschen von Caches, Aktualisieren von Android Studio und dem Kotlin-Plugin hat es für mich behoben. Vielen Dank
user1405990
Hallo nochmal, mit etwas Zeit zum Nachdenken und ein bisschen Kotlin googeln - ich glaube nicht, dass die Ursache hier in den Plugins an sich liegt . println befindet sich im Paket kotlin.io . Das Kotlin-stdlib-JAR enthält "kotlin.io". Also kein Problem an der Oberfläche. Ich habe kotlin.io ausdrücklich aufgenommen. * - Ergebnis : Unresolved reference: io. Als JAR - Archiv, die Referenzauflösung soll Kindergärten Sachen sein. Na, was is los!??
wird
Ich bin zurück ... Netbeans-Leute können dies auch "beheben" - Löschen Sie den Netbeans-Benutzercache. Sie können den Speicherort des Netbeans-Cache-Verzeichnisses anzeigen, indem Sie auf das Feld Hilfe / Info klicken. Bereinigen - Netbeans stoppen - Cache löschen - Netbeans neu starten - neu erstellen! Volia .
wird
Wenn Sie dieses Problem nur in Ihrer Gradle-Build-Datei sehen, aber nicht in Projekt-Quelldateien, könnte dies helfen: diskutieren.kotlinlang.org/t/…
AlexO
23

Wenn jemand über dieses und NIEMALS stolpert Invalidate Cacheoder Update Kotlin's Versionarbeitet:

1) Stellen Sie zunächst sicher, dass Sie es von außerhalb der IDE erstellen können. Wenn Sie gradlezum Beispiel verwenden:

gradle clean build

Wenn alles gut geht, ist es gut, mit Ihrer Umgebung zu arbeiten Kotlin.

2) Versuchen Sie Folgendes, um den IDE-Build zu beheben :

Projektstruktur -> {Modul auswählen} -> Kotlin -> FIX

Wie von einem JetBrain-Mitglied hier vorgeschlagen: https://discuss.kotlinlang.org/t/intellij-kotlin-project-screw-up/597

vinitius
quelle
13
Ich benutze Android Studio. Ich habe keine "Kotlin" -Option in meiner Projektstruktur> Module. Irgendwelche Ideen?
AutonomousApps
4
Ich sehe diese Kotlin-Option nicht einmal, nachdem ich Module ausgewählt habe ... mit Enterprise Intellij, und Kotlin ist anscheinend bereits konfiguriert, wenn ich auf Tools -> Kotlin -> Configure
klicke
22

In meinem Fall war es eine falsch konfigurierte IntelliJ-Instanz.

Projektstruktur -> SDKs -> Entfernen Sie das Java SDK und fügen Sie es erneut hinzu

Martín Coll
quelle
Dies war mein Problem, nachdem ich OpenJDK entfernt und Oracle JDK installiert hatte. Vielen Dank.
Patrik Stas
Dies hat mein Problem mit IntelliJ 2019.3 und OpenJDK 11 gelöst. Ich musste nur das SDK entfernen und erneut hinzufügen.
z11i
9

Bin auf dieses Problem gestoßen. Ich musste meiner build.grade Folgendes hinzufügen:

apply plugin: 'kotlin-android'

Nick
quelle
8

Ok, ich war schon ein paar Mal hier und bin mir nicht ganz sicher, wie oder warum dies passiert, aber das Lesen deutet darauf hin, dass es sich um eine Kotlin / JVM-Nichtübereinstimmung handelt. Ich habe eine Reihe von Dingen ausprobiert, die auf dieser Seite erwähnt wurden, aber nicht ohne vollständigen Erfolg. Dies war die Art von Symptom, das die IDE im Nachrichtenfenster anzeigte, nachdem versucht wurde, Tests über die IDE auszuführen. Das Codefeld weist jedoch keine roten Linien auf, die darauf hinweisen, dass Module nicht gefunden oder importiert werden können oder etwas Unangenehmes.

Geben Sie hier die Bildbeschreibung ein

Mein Projekt (zum Zeitpunkt des Schreibens dieses Dokuments) ist ein Gradle 4.10.2 Kotlin 1.3-Projekt in IntelliJ (IntelliJ IDEA 2018.2.5 (Ultimate Edition) Build # IU-182.4892.20, erstellt am 16. Oktober 2018).

Für den Anfang habe ich die Caches ungültig gemacht und neu gestartet. Dann lief ein gradle sauberer Build. Nach dem Wiederaufbau des Projekts noch keine Freude. Ich ging in die Projekteinstellungen und stellte fest, dass die Compilerversionen nicht auf Java 8 eingestellt waren. Ich stellte die Compiler / Kotlin / Target JVM-Version und den Compiler / Java / Project Byte Code auf 1.8 / 8 ein (siehe unten) und führte dann einige Tests in aus die IDE und wir sind wieder im Geschäft! Referenzen in meinem Fall gelöst.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Offen
quelle
Ich hatte ein ähnliches Problem, musste aber auch meine Modulmodule auf die richtige JVM-Zielversion ändern
Jake Walsh
4

Für mich lag es daran, dass dem Projekt Gradle Libraries in seiner Projektstruktur fehlten.

Fügen Sie einfach build.gradle hinzu: apply plugin: 'idea'

Und dann laufen: $ gradle idea

Danach baut gradle Abhängigkeitsbibliotheken neu auf und die Referenzen werden erkannt!

R Lu
quelle
Diesem wird geholfen und funktioniert aufgrund fehlender Gradle-Bibliotheken
Kaushik Burkule
3

Eine mögliche Lösung für eigenständige Kotlin-Projekte besteht darin, Kotlin-Standardbibliotheken explizit in das Root-Projekt aufzunehmen.

So machen Sie das in IntelliJ IDEA:

  • Drücken Sie Strg + Umschalt + A (Suchaktionen oder -optionen)
  • Geben Sie "Kotlin im Projekt konfigurieren" ein und lassen Sie es Standardbibliotheken für Sie einschließen
Antonio Martinović
quelle
3

Mein Problem wurde durch Hinzufügen kotlinwie folgt gelöst

präsentation.gradle (app.gradle)

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android' // here

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

android {
    ...
}

dependencies {
    ...
}

domain.gradle (reines Kotlin)

Mein Fehler war hier zu werfen, weil Android Studio mein Domain-Modul als reines Java-Modul erstellt und das Plugin als Java angewendet hat und ich es in meinem Präsentationsmodul verwendet habe, das ein Android / Kotlin-Modul ist

Das Android Studio findet und importiert den Pfad des Pakets, aber die Inkompatibilität erlaubt den Build nicht.

Einfach entfernen apply plugin: 'java'und wie folgt zu Kotlin wechseln

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

Ich denke, dass es hilfreich sein wird

Abner Escócio
quelle
1

Hatte das gleiche mit IDEA 14.1.5, Kotlin v.1.0.0-beta-1038-IJ141-17.
Kotlin erhält beim Erstellen eines neuen Projekts einen eigenen Listeneintrag (wie Java), aber die einzige funktionierende Konfiguration war:

Neu | Projekt | Java | "Kotlin (Java)" (stellen Sie sicher, dass auch Project SDK konfiguriert ist)
Verwenden Sie die Bibliothek: Create, "Copy to: lib".

Kaay
quelle
1

Ich habe alles versucht: Build-Ordner bereinigen gradle clean build, ausführen, AS-ungültigen Cache (x2) ausführen, Kotlin-Plugin neu installieren, PC neu starten.

Aber am Ende, nachdem ich das alles getan hatte, funktionierte es immer noch nicht, aber das Entfernen aus dem Projekt build.gradledieser Zeile : apply plugin: 'kotlin-android-extensions', Gradle Sync und das erneute Hinzufügen funktionierten

Ultimo_m
quelle
1

Ich habe diesen Fehler auch bekommen, aber ich habe ihn mit dem folgenden Konzept gelöst.

  1. Starten Sie Ihre Intellij Idea Community Edition neu.
  2. Gehen Sie danach in die rechte Ecke, um die Konfiguration für Java festzulegen.

Geben Sie hier die Bildbeschreibung ein

  1. Wählen Sie die Konfigurationseinstellung für alle Module. Führen Sie dann den Code erneut aus. Es wird klappen.

Dieser Fehler tritt auf, weil Java nicht richtig konfiguriert wurde.

Savigya Singh
quelle
1
Es tut mir leid, aber der 2. ist nicht klar. Ich konnte "die rechte Ecke" nicht finden
Deunz
0

Ist mir heute passiert.

Mein Problem war, dass zu viele Registerkarten mit Quellcode geöffnet waren (ich wusste nicht, dass sie geöffnet waren).

Wenn Sie alle Registerkarten schließen, können Sie IntelliJ möglicherweise nicht mehr dazu bringen, die Abhängigkeiten korrekt zu indizieren

LeoColman
quelle
Eigentlich macht das total Sinn, der Grund, warum du -ngt Score bekommst, ist, dass du es nicht gut erklärt hast. Wenn some1 zwei Projekte in IDE geöffnet hat, sagen wir eines mit Gradle und eines mit Maven; Das Ausführen eines Projekts kann zu ungelösten Referenzen führen.
HA S
0

Das Ungültigmachen von Caches und das Aktualisieren des Kotlin-Plugins in Android Studio haben den Trick für mich getan.

André Ramon
quelle
0

Ich hatte dieses Problem, weil ich versucht habe, eine Bibliothek mit mehreren Plattformen einzurichten.

Ich hatte alle Quellensätze mit ihren Abhängigkeiten aus der Datei "build.gradle" gelöscht, aber den "gemeinsamen" Quellensatz beibehalten.

Native funktionierte einwandfrei, aber die JVM konnte nicht erstellen und zeigte Ihren Fehler an.

Am Ende bestand die Lösung darin, weder den Quellensatz der JVM noch dessen Abhängigkeiten zu löschen

Alaa Sbateen
quelle
0

Eine andere Sache, die ich hinzufügen möchte, ist, dass Sie Ansicht -> Werkzeugfenster -> Gradle auswählen müssen, bevor Sie das Projekt mit dem Gradle ausführen können.

Wenn das Projekt mit Gradle normal erstellt und ausgeführt wird, mit IntelliJ jedoch nicht, kann dies die Angelegenheit lösen.

jairhumberto
quelle
0

Ich hatte dieses Problem, weil der Linter druckte, dass mein Objekt eine Instanz war, Foowährend der Compiler seinen Typ nicht definieren konnte und es als ein AnyObjekt wie (Es war komplexer in meinem Fall, der Linter zeigt Fehler im folgenden Code, aber das Idee ist hier):

    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.

Um es zu reparieren, musste ich mein Objekt werfen:

val foo = test() as Foo
Bubu
quelle
0

Überprüfen und installieren Sie Android Studio-Updates. Dies behebt das Problem.

Geben Sie hier die Bildbeschreibung ein

user2912087
quelle
0

Manchmal kann dies passieren, weil Sie versuchen, ein Projekt mit inkompatiblen Versionen des Kotlin-Plugins in Gradle mit dem Plugin in Ihrer IDE zu verwenden. Überprüfen Sie die Versionen von org.jetbrains.kotlin.jvm und anderen Kotlin-Plugins in build.gradle sowie die Version des installierten Kotlin-Plugins in Ihrer IDE und versuchen Sie, es ähnlich zu machen:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Arkady
quelle
-1

Manchmal lohnt es sich in ähnlichen Situationen (ich glaube nicht, dass es Ihr Problem ist, weil Ihr Fall sehr einfach ist), das Kotlin-Dateipaket zu überprüfen.

Wenn Sie eine Kotlin-Datei im selben Paket haben und dort einige Klassen ablegen und die Paketdeklaration verpasst haben, sieht es im IntelliJ so aus, als hätten Sie Klassen im selben Paket, aber ohne Definition des Pakets zeigt Ihnen das IntelliJ:

Fehler: (5, 5) Kotlin: Ungelöste Referenz: ...

Przemek Nowak
quelle
-1

Einfachste Lösung:

Tools-> Kotlin-> Kotin im Projekt konfigurieren

Upvote wenn gefunden Nützlich.

Shivam Gaba
quelle
Tut nichts: Alle Module mit Kotlin-Dateien sind konfiguriert
Deunz