Котлин с JDK 10 - PullRequest
       35

Котлин с JDK 10

0 голосов
/ 29 сентября 2018

Недавно я обновил свой JDK до JDK 10, и теперь у меня проблема с настройкой Kotlin, и я не могу запустить свой код.это из-за JDK 10 или из-за чего-то другого?

подсказка, которую я получил от InteliJ при создании проекта Kotlin:

Configure Kotlin
        Added /Applications/IntelliJ IDEA CE.app/Contents/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-jdk7.jar to library configuration
        Added /Applications/IntelliJ IDEA CE.app/Contents/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-jdk7-sources.jar to library configuration
        Added /Applications/IntelliJ IDEA CE.app/Contents/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-jdk8.jar to library configuration
        Added /Applications/IntelliJ IDEA CE.app/Contents/plugins/Kotlin/kotlinc/lib/kotlin-stdlib-jdk8-sources.jar to library configuration

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Начиная с версия 1.3.30 Kotlin теперь поддерживает цели байт-кода JVM 9, 10, 11, 12. ( KT-26240 - билет, упомянутый LppEdd - включен.)

0 голосов
/ 30 сентября 2018

На момент написания (сентябрь 2018 г.) компилятор Kotlin не поддерживает создание байт-кода Java 9+ по умолчанию.

Аргумент -jvm-target 9 ( см. KT-21959 ) должензаставить компилятор Kotlin генерировать байт-код версии 53.

Поскольку Java 10 - bytecode version 54 ( reference ) - я не уверен, как это будет работать.

Тем не менее:

  • Вы можете скомпилировать байт-код JVM 8, который может выполняться на JVM 9+ в обычном режиме.

  • Если вы хотите определить модули (или используйте jlink , который требует модульности всей программы) вы можете написать module-info.java файлы на Java сегодня и поместить в тот же корень источника, что и файлы Kotlin.

    • Компилятор Kotlin правильно ограничит доступность объявлений в неэкспортированных пакетах в зависимых модулях.
    • В настоящее время не планируется поддерживать определения модулей в Kotlin.

Кроме этого, большинство функций языка Java 9-11 (var, REPL,улучшения потоков и т. д.) - уже некоторое время существует в Kotlin, поэтому основным непосредственным преимуществом использования Java 9-11 является использование JVM для оптимизации или модуль system / jlink (который можно использовать, как описано выше)

...