web-dev-qa-db-de.com

Unterstützt Kotlin Java 11?

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?

19
dharanikesav

Der vom Kotlin-Compiler generierte Bytecode ist mit JVM 11 vollständig kompatibel, wenn die Zielversion auf 1.6 oder 1.8 festgelegt ist.

22
yole

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.

6
Malte Skoruppa