如何解决在 Intellij 中运行 Kotlin REPL 时出现 Java.lang.ExceptionInInitializerError
我全新安装了 Intellij 2020.3.3 社区和 JDK v16。我启动了 Intellij,并确保更新 Kotlin 插件。我创建了一个新的 Kotlin 项目,并且没有对其进行任何更改。我尝试运行 Kotlin REPL 工具(工具->Kotlin->Kotlin REPL),但出现以下异常:
"C:\Program Files\Java\jdk-16\bin\java.exe" -Dkotlin.repl.ideMode=true -Dfile.encoding=UTF-8 @C:\Users\---\AppData\Local\Temp\idea_arg_file349852720
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 @55141def
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
我尝试重新安装 JDK/IDE,并清除了临时文件夹。不知道还能尝试什么,IDE 和语言对我来说都是新的。建议?
编辑
找到解决方法:我再次卸载并降级到 JDKv8,但问题不存在。
解决方法
我今天安装了 IntelliJ IDEA Community Edition 2021.1.3
,并在我的 Linux PC 上使用了 JDK-16.0.1
。
这也发生在我的案例中。我首先检查了所有设置,然后我发现我有一个 Kotlin 更新。在我更新后,Kotlin REPL 启动时没有任何错误。
要更新 Kotlin 插件,请转至 Settings -> Languages & Frameworks -> Kotlin.
点击 check again
按钮了解您是否有任何新的更新。如果是,则更新它并重新启动,然后查看 Kotlin REPL 是否有效。
我在 Java 升级过程中遇到了同样的问题。我使用 AdoptOpenJDK 16.0.0.j9-adpt
并通过以下方式修复它:
-
将
Gradle
版本升级到7.0-rc-1
(我正在早期使用 Java 16 对其进行测试) -
使用以下部分更新了我的
Gradle script
:compileKotlin { kotlinOptions { jvmTarget = "15" } } compileTestKotlin { kotlinOptions { jvmTarget = "15" } }
Enum 中仍然不支持 Java 16,所以我现在不得不把它放到 15。
,我使用 JDK 15 而不是 16 修复了它。
要使用 JDK 15,请按照下列步骤操作:
文件 -> 新建 -> 项目...
-> 在 «Project SDK» 中,转到 «Download JDK» 并选择 «Version: 15» 并单击 Download。
然后像往常一样创建您的项目(按照前面的步骤使用 JDK 15)。
,我新建项目后下载了adaptopenjdk 1.8版,问题解决了
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。