Idea 不断将 Kotlin 的编译目标从 1.8 切换到 1.6



我正在使用Intellij Idea开发一个基于Maven和JDK 8的新Kotlin项目。一切都很棒,除了每次 Maven 重新导入编译目标出于某种原因从 1.8 切换到 1.6 之后。

我从字面上尝试了从同一个问题的 2 个最佳答案(虽然来自 Java 世界(的所有内容,但对我来说没有任何效果。我也迁移到了 Gradle,希望能克服这个问题,但这也没有帮助。除了提到的SO问题之外,我浏览了大量的论坛,建议总是与提到的SO答案相同。

那么问题来了,如何防止 Idea 在重新导入后切换目标 Java 版本?

因此,经过多次尝试和错误尝试,我发现 Idea 选择了 1.6 版,因为这是 Kotlin 的默认 JVM 目标版本,我没有在pom.xmlbuild.gradle的任何地方设置该 1.8 版本。如果此版本未在此处定义,则Idea显然倾向于忽略项目设置并坚持默认值。

这意味着解决方案是在kotlin 插件中手动设置版本,但首先确保您已完成处理相同问题的已接受答案中列出的所有内容,但使用 Java 处理相同的问题。

现在,假设您正在使用 Gradle(迁移后我仍然使用它(,您应该按照说明将 kotlin 插件包含在您的build.gradle中,正如 kotlin 的文档中所写的关于如何与Gradle一起使用一样。但这还不够,所以你必须在该文档中向下滚动并找到 kotlin 编译选项,特别是jvmTarget。在那里你会发现 1.6 版本确实是默认的,你可以继续在build.gradle中配置编译任务:

compileKotlin { kotlinOptions.jvmTarget = 1.8 }

瞧,现在每次重新导入都坚持到 1.8。如果您使用Maven,您还可以使用一个插件(只需谷歌它(,我相信您可以使用相同的jvmTarget设置,尽管我还没有尝试过。

解决方法:

compileKotlin {
kotlinOptions.jvmTarget = 1.8
}

如果这对您不起作用,请运行"编译Kotlin"任务并检查输出。构建脚本中可能存在其他一些错误,导致无法应用此选项。

最新更新