Tut Kotlin Java unterstützen 11?
Ich versuche, mit Kotlin V1.2.70, Gradle V4.10.1 und Java 11. Beim kompilieren Sie das Projekt mit gradle, die Fehlermeldung "Unbekannter JVM-Target-Version: 11. Unterstützte Versionen: 1.6, 1.8".
Tut der Kotlin-compiler unterstützt Java 11 (erzeugt code kompatibel mit Java-11-JVM)? Wenn ja, wie konfiguriert, dass mit gradle?
- Du bist verwirrend kotlin generierten bytecode-version mit jvm-version können Sie erzeugen nichts und es laufen auf jvm-11.. das ist der Grund, warum 90% der java-Entwickler mit java 8, aber es laufen auf jvm-11...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den bytecode generiert, die von der Kotlin-compiler, wenn die Zielversion festgelegt ist, um entweder 1.6 oder 1.8 ist, ist voll kompatibel mit JVM-11.
kotlin-stdlib-jdk11
enthält einige der Feinheiten Hinzugefügt java 11?Dem Kotlin-compiler unterstützt die JVM, 9, 10, 11, und 12 bytecode-Versionen als Ziel-da Kotlin 1.3.30 (changelog).
Vor 1.3.30, nur JVM 1.6 und 1.8 bytecode-Versionen unterstützt wurden, die als Ziele. Da Sie verwendet 1.2.70 Angabe JVM-11-bytecode als Ziel-led die Fehler, die Sie erwähnt.
Gibt es zwei Lösungen:
Angeben, 1.8 als JVM-Ziel-bytecode-version. Wie @yole sagte in seiner Antwort, diese ist voll kompatibel mit JVM-11. In der Tat, wie erwähnt, in changelog Kotlin 1.3.30, neuere JVM Ziel bytecode-Versionen derzeit nicht hinzufügen, eine bytecode-Optimierungen, über die diejenigen unterstützt, die in 1.8, also es ist wirklich nicht keinen Unterschied machen, für jetzt jedenfalls.
Upgrade auf Kotlin 1.3.30 (oder neuer), dann können Sie halten 11 der JVM-bytecode Zielwert. Der Vorteil ist, dass Sie automatisch profitieren von zusätzlichen bytecode-Optimierungen in den zukünftigen Versionen der Kotlin-compiler.