我正在使用Intellij Idea开发一个基于Maven和JDK 8的新Kotlin项目。一切都很棒,除了每次 Maven 重新导入编译目标出于某种原因从 1.8 切换到 1.6 之后。
我从字面上尝试了从同一个问题的 2 个最佳答案(虽然来自 Java 世界(的所有内容,但对我来说没有任何效果。我也迁移到了 Gradle,希望能克服这个问题,但这也没有帮助。除了提到的SO问题之外,我浏览了大量的论坛,建议总是与提到的SO答案相同。
那么问题来了,如何防止 Idea 在重新导入后切换目标 Java 版本?
因此,经过多次尝试和错误尝试,我发现 Idea 选择了 1.6 版,因为这是 Kotlin 的默认 JVM 目标版本,我没有在pom.xml或build.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"任务并检查输出。构建脚本中可能存在其他一些错误,导致无法应用此选项。