IntelliJ2021.1 IDEA x64(Windows 10) Kotlin REPL 运行错误

问题描述

我开始在 Codelab 中通过 Kotlin Bootcamp for Programmers 学习 Kotlin。

在第一部分中,我创建了 Kotlin 项目并开始(?)Kotlin REPL(工具>Kotlin>Kotlin REPL)。

然而,发生了以下错误

exception: java.lang.ExceptionInInitializerError
at com.intellij.pom.java.languageLevel.<clinit>(LanguageLevel.java:25)
at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:90)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:76)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:45)
at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:227)
at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit$default(CLITool.kt:222)
at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMain(CLITool.kt:214)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler$Companion.main(K2JVMCompiler.kt:271)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.main(K2JVMCompiler.kt)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not "opens java.util" to unnamed module @76505305
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
at com.intellij.util.ReflectionUtil.makeAccessible(ReflectionUtil.java:252)
at com.intellij.util.ReflectionUtil.getDeclaredMethod(ReflectionUtil.java:269)
at com.intellij.DynamicBundle.<clinit>(DynamicBundle.java:22)
... 17 more

Java 和 javac 版本是

C:\Users\user>java -version 
java version "16.0.1" 2021-04-20 Java(TM) SE Runtime Environment (build 16.0.1+9-24) Java  
HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24,mixed mode,sharing) 
C:\Users\user>javac     -version javac 16.0.1

我想解决这个问题。

解决方法

Kotlin 尚不兼容 Java 16;见this issue

看起来很快就会解决。同时,解决方法是在 Java 15(或更低版本)上运行。