Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle Kotlin支持Java11吗?_Gradle_Kotlin_Jvm - Fatal编程技术网

Gradle Kotlin支持Java11吗?

Gradle Kotlin支持Java11吗?,gradle,kotlin,jvm,Gradle,Kotlin,Jvm,我正在尝试使用Kotlinv1.2.70、Gradlev4.10.1和Java11。使用gradle编译项目时,出现一个错误,提示“未知JVM目标版本:11。支持的版本:1.6、1.8” Kotlin编译器是否支持Java11(生成与Java11JVM兼容的代码)?如果是这样,如何使用gradle进行配置?当目标版本设置为1.6或1.8时,Kotlin编译器生成的字节码与JVM 11完全兼容。自Kotlin 1.3.30()以来,Kotlin编译器支持JVM 9、10、11和12字节码版本作为目

我正在尝试使用Kotlinv1.2.70、Gradlev4.10.1和Java11。使用gradle编译项目时,出现一个错误,提示“未知JVM目标版本:11。支持的版本:1.6、1.8”


Kotlin编译器是否支持Java11(生成与Java11JVM兼容的代码)?如果是这样,如何使用gradle进行配置?

当目标版本设置为1.6或1.8时,Kotlin编译器生成的字节码与JVM 11完全兼容。

自Kotlin 1.3.30()以来,Kotlin编译器支持JVM 9、10、11和12字节码版本作为目标

在1.3.30之前,仅支持JVM1.6和1.8字节码版本作为目标。由于您使用了1.2.70,将JVM 11字节码指定为目标导致了您提到的错误

有两种解决方案:

  • 将1.8指定为JVM目标字节码版本。正如@yole在回答中所说,这与jvm11完全兼容。事实上,正如在中所提到的,较新的JVM目标字节码版本目前没有添加任何字节码优化,超出了1.8中支持的字节码优化,因此目前它确实没有任何区别

  • 升级到Kotlin 1.3.30(或更新版本),然后可以保留11作为JVM字节码目标值。其优点是,在Kotlin编译器的未来版本中,您将自动受益于额外的字节码优化


从Kotlin 1.4开始,它支持Java
1.6
(默认)、
1.8
9
10
11
12
13
14

-jvm目标 指定生成的JVM字节码的目标版本。可能的值为1.6、1.8、9、10、11、12、13和14。默认值为1.6


是的,它完全支持Java 11。

这是否意味着我必须用JVM 8执行gradle任务“compileKotlin”?否。运行Kotlin编译器所用的JVM版本与编译器生成的字节码版本无关。但当我为gradle任务compileKotlin任务将JVM设置为11时,我遇到了错误未知的JVM目标版本:11。支持的版本:1.6、1.8“build.gradle中的JVM目标版本指定Kotlin编译器生成的字节码版本。它与用于执行Gradle任务的JVM版本无关。再一次:将jvmTarget设置为1.8,不必担心其他任何事情,一切都会正常工作。@Suresh它将在某个时间点添加,但我不能给出任何具体的时间范围。您将kotlin生成的字节码版本与jvm版本混淆,您可以生成任何内容并在jvm 11上运行它。。这就是为什么90%的java开发人员使用java 8,但在jvm 11上运行它。。。