Ich versuche, Kotlin V1.2.70, Gradle V4.10.1 und Java 11 zu verwenden. Beim Kompilieren des Projekts mit Gradle wird der Fehler "Unbekannte JVM-Zielversion: 11. Unterstützte Versionen: 1.6, 1,8 ".
Unterstützt der Kotlin-Compiler Java 11 (produziert Code, der mit Java 11 JVM) kompatibel ist? Wenn ja, wie kann man das mit gradle konfigurieren?
Der vom Kotlin-Compiler generierte Bytecode ist mit JVM 11 vollständig kompatibel, wenn die Zielversion auf 1.6 oder 1.8 festgelegt ist.
Der Kotlin-Compiler unterstützt die JVM 9-, 10-, 11- und 12-Bytecode-Versionen als Ziel seit Kotlin 1.3.30 ( changelog ).
Vor 1.3.30 wurden nur JVM 1.6- und 1.8-Bytecode-Versionen als Ziele unterstützt. Da Sie 1.2.70 verwendet haben, führte die Angabe von JVM 11-Bytecode als Ziel zu dem von Ihnen erwähnten Fehler.
Es gibt zwei Lösungen:
Geben Sie 1.8 als JVM-Ziel-Bytecode-Version an. Wie @yole in seiner Antwort sagte, ist dies voll kompatibel mit JVM 11. Wie bereits im Changelog von Kotlin 1.3. erwähnt, fügen neuere JVM-Zielbytecode-Versionen derzeit keine Bytecode-Optimierungen hinzu jenseits der in 1.8 unterstützten, so dass es im Moment sowieso keinen Unterschied macht.
Aktualisieren Sie auf Kotlin 1.3.30 (oder neuer), und behalten Sie dann 11 als JVM-Bytecode-Zielwert bei. Der Vorteil ist, dass Sie in zukünftigen Versionen des Kotlin-Compilers automatisch von zusätzlichen Bytecode-Optimierungen profitieren.