IntelliJ IDEA无法启动:无法加载JDK类:com.sun.jdi.Field

14

When I try to start IntelliJ I get a popup saying

Cannot load a JDK class: com.sun.jdi.Field 
Please ensure you run the IDE on JDK rather than JRE.

这真的很奇怪,因为我已将JAVA_HOMEPATH变量指向Java 11 JDK。


有点棘手的远程调试问题,但是请执行以下步骤:1)显示您的JAVA_HOME变量。2)检查它是否在IntelliJ配置文件中被覆盖 https://www.jetbrains.com/help/idea/switching-boot-jdk.html 3)作为最后的手段,请尝试通过配置文件进行更改。 - Lesiak
@Lesiak 更改.jdk文件中的JDK有所帮助!谢谢! - Cerus
下载带有JDK的IntelliJ。这应该可以直接使用。 - Thorbjørn Ravn Andersen
@ThorbjørnRavnAndersen,如果按照 https://intellij-support.jetbrains.com/hc/articles/206544879 进行更改并且自定义运行时位置无效,请查看我的答案以获取更多详细信息。 - CrazyCoder
@CrazyCoder 确实。向团队致敬,因为他们制作了一个“自带jvm”的分发版——这使得事情变得更加容易! - Thorbjørn Ravn Andersen
5个回答

32
这个问题会出现在你使用其他版本覆盖了默认的JetBrains Runtime后,IDE将该运行时的位置保存在CONFIG\idea64.exe.jdk文件中,然后此运行时变得无效(已删除或损坏)或与新的IDE版本不兼容。
解决方法是删除idea64.exe.jdk/idea.exe.jdk文件,以便IDE使用默认捆绑的JetBrains Runtime(文件名可能因所使用的产品而异,因此通用指南是在IDE config directory中删除*.jdk文件)。
以下是大多数Windows用户应该删除的文件:
c:\Users\<user>\AppData\Roaming\JetBrains\IntelliJIdea2020.1\idea64.exe.jdk

这个问题发生在该文件指向Java 8时,因为IntelliJ IDEA不再运行在Java 8上,而是期望Java 11。Java 11已经捆绑了,但是这个文件覆盖了它,因此出现了问题。
请还要检查这个文档中的其他可能覆盖IDE运行时的方法,并确保没有任何一个生效: IDEA_JDK_64环境变量也可能会覆盖默认运行时,您需要取消设置它。
另一个可能的问题是jbr子目录中捆绑的运行时已经损坏。通过在IDE_HOME\jbr\bin内运行java-version来验证它。重新安装IDE应该有所帮助。
请参见在IntelliJ IDEA论坛中的相关讨论
该问题正在YouTrack中调查

Intellij是否可以验证捆绑的JVM文件的完整性?或者这不是发生的事情吗? - Thorbjørn Ravn Andersen
这是一个新问题,我们仍在调查为什么会发生这种情况。是的,理想情况下IDE应该验证JVM的完整性,但通过特定于平台的启动器可能会有问题。 - CrazyCoder
你确定文件不是"idea.exe.jdk"(或"idea64.exe.jdk")吗? - Jaroslav Záruba

1

确保您的IntelliJ版本支持在Java 11上运行(而不仅仅是编译)。此外,如果您正在使用Windows并且刚刚定义了JAVA_HOME变量,请重新启动。


我正在使用最新的IntelliJ IDEA Ultimate版本,应该支持Java 11。不幸的是,重新启动并没有解决问题。 - Cerus

1

谢谢分享,但它对已被接受的答案增加了什么新信息? - CrazyCoder

0

0

只需更改系统变量JAVA_HOME的值:

JAVA_HOME=C:\Program Files\Java\jre

至:

JAVA_HOME=C:\Program Files\Java\jdk

在我的电脑上运行得非常好(Windows系统)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接