„Das Modul wurde mit einer inkompatiblen Kotlin-Version kompiliert“ – wie ich diesen Fehler besiegt habe und Sie es auch können
\n\nHaben Sie sich jemals wie Sherlock Holmes gefühlt, als Sie versuchten, eine rätselhafte Compiler-Meldung zu verstehen? Wenn Sie mit Kotlin arbeiten, sind Sie diesem Frankenstein-Monster sicherlich schon begegnet: „Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15“. Tausende Entwickler auf Stack Overflow haben sich über diesen Fehler den Kopf zerbrochen. Und ich auch.
\n\nStellen Sie sich vor: Sie haben Abhängigkeiten aktualisiert, auf „Ausführen“ geklickt und … peng! Ihr Projekt weigert sich zu bauen, und in der Konsole prangt diese Meldung. Kommt Ihnen bekannt vor? Lassen Sie uns herausfinden, warum das passiert und wie Sie Ihren Code zum Laufen bringen.
\n\nWarum der Fehler auftritt: Eine kurze Einführung
\n\nKotlin ist eine Sprache, die sich aktiv weiterentwickelt. Jede neue Version bringt Verbesserungen, aber auch Kompatibilitätsprobleme. Der Kern des Fehlers ist einfach: Sie verwenden eine Bibliothek (ein Modul), die mit einer bestimmten Kotlin-Version kompiliert wurde (in unserem Fall 1.5.1), während Ihr Projekt eine andere erwartet (1.1.15). Das ist, als ob Sie versuchen würden, eine SIM-Karte vom iPhone 14 in ein Nokia 3310 einzulegen – es passt physisch nicht.
\n\nDer Fehler incompatible version of Kotlin tritt typischerweise in Projekten auf, in denen:
- \n
- Android Studio oder IntelliJ IDEA verwendet wird \n
- Die Abhängigkeitsverwaltung über Gradle erfolgt \n
- Externe Bibliotheken oder Module eingebunden sind \n
- Die Versionen des Kotlin-Plugins und der Kotlin stdlib nicht übereinstimmen \n
Betrachten wir drei der effektivsten Methoden zur Lösung des Problems. Wir gehen vom Einfachsten zum Zuverlässigsten vor.
\n\nMethode Nr. 1: Kotlin-Versionen synchronisieren (das Naheliegendste)
\n\nDas Erste, was Sie tun sollten, ist zu überprüfen, ob alle Komponenten Ihres Projekts dieselbe Kotlin-Version verwenden. Es ist wie das Stimmen eines Orchesters: Alle Instrumente müssen in derselben Tonart spielen.
\n\nSchritt 1: Überprüfen Sie die Version des Kotlin-Plugins
\nÖffnen Sie die Datei build.gradle (auf Projektebene) und suchen Sie den Abschnitt buildscript. Stellen Sie sicher, dass die Plugin-Version Ihren Erwartungen entspricht:
// build.gradle (Projektebene)\nbuildscript {\n ext.kotlin_version = '1.5.1' // oder Ihre Version\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"\n // andere Abhängigkeiten\n }\n}\n\nSchritt 2: Überprüfen Sie die Version im App-Modul
\nSchauen Sie nun in die build.gradle Ihres Moduls (normalerweise app). Auch dort sollte die Kotlin-Version angegeben sein:
// build.gradle (Modul: app)\napply plugin: 'com.android.application'\napply plugin: 'kotlin-android'\n\nandroid {\n // ... Android-Konfiguration\n}\n\ndependencies {\n implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"\n // andere Abhängigkeiten\n}\n\nSchritt 3: Gradle synchronisieren
\nNachdem Sie die Versionen geändert haben, klicken Sie unbedingt auf Jetzt synchronisieren in Android Studio. Dadurch werden alle Abhängigkeiten aktualisiert. Wenn der Fehler durch eine einfache Desynchronisation verursacht wurde, wird er verschwinden.
\n\n💡 Profi-Tipp: Wenn Sie die Variable $kotlin_version in beiden Dateien verwenden, reicht es aus, sie nur an einer Stelle zu ändern. Dies verringert das Fehlerrisiko.
Methode Nr. 2: Cache leeren und Projekt neu erstellen
\n\nManchmal speichert Gradle alte Versionen von Bibliotheken zwischen. Selbst wenn Sie alles in der Konfiguration korrigiert haben, kann es hartnäckig die alte Version ziehen. Das ist wie ein alter Browser-Cache – er muss geleert werden.
\n\nSchritt 1: Caches ungültig machen
\nIn Android Studio oder IntelliJ IDEA:
\n- \n
- Gehen Sie zu
Datei → Caches ungültig machen und neu startenBlogs
Buchempfehlungen
Lesen Sie auch
NullPointerException im Kotlin-Fragment: Wie man ihn besiegt und nicht verrückt wird
Gehälter von C#-Entwicklern in Russland: Marktüberblick 2024
OAuth 2.0 und JWT-Autorisierung in TypeScript: Ein vollständiger Leitfaden für Anfänger
Fold vs Reduce in Kotlin: Wann was verwenden? Vollständige Analyse
Dependency Injection in Java: für Anfänger – vollständiger Leitfaden