IntelliJ IDEA startet nicht: Eine JDK-Klasse kann nicht geladen werden: com.sun.jdi.Field

13

Wenn ich versuche, IntelliJ zu starten, wird ein Popup-Spruch angezeigt

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

Es ist wirklich seltsam, weil ich die Variable JAVA_HOMEund PATHauf das Java 11 JDK verwiesen habe .

Cerus
quelle
Es ist etwas schwierig, aus der Ferne zu debuggen, aber 1) zeigen Sie uns Ihre JAVA_HOME-Variable. 2) Überprüfen Sie, ob es in der IntelliJ-Konfigurationsdatei jetbrains.com/help/idea/switching-boot-jdk.html nicht überschrieben wird. 3) Versuchen Sie als letzten Ausweg, es über die Konfigurationsdatei zu ändern
Lesiak
@Lesiak Das Ändern des JDK in der .jdk-Datei hat geholfen! Vielen Dank!
Cerus
Laden Sie IntelliJ mit einem JDK herunter . Dies sollte
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen nicht, wenn per Intellij-support.jetbrains.com/hc/articles/206544879 geändert wurde und der benutzerdefinierte Laufzeitspeicherort ungültig wurde, siehe meine Antwort für weitere Details.
CrazyCoder
@CrazyCoder True. Ein großes Lob an das Team für die Erstellung einer "Bring Own JVM" -Distribution - das macht die Sache viel einfacher!
Thorbjørn Ravn Andersen

Antworten:

28

Dieses Problem tritt auf, wenn Sie die Standard-JetBrains-Laufzeit mit einer anderen Version überschreiben. IDE speichert den Speicherort dieser Laufzeit unter der CONFIG-\idea64.exe.jdk Datei. Diese Laufzeit wird dann ungültig (entfernt oder beschädigt) oder ist nicht mit der neuen IDE-Version kompatibel.

Die Lösung besteht darin, idea64.exe.jdk/ idea.exe.jdkfile so zu löschen , dass IDE die standardmäßig mitgelieferte JetBrains Runtime verwendet (der Dateiname kann je nach verwendetem Produkt unterschiedlich sein, daher besteht die allgemeine Anleitung darin, *.jdkDateien im IDE- Konfigurationsverzeichnis zu löschen ).

Hier ist die Datei, die für die meisten Benutzer unter Windows gelöscht werden sollte:

c:\Users\<user>\AppData\Roaming\JetBrains\IntelliJIdea2020.1\idea64.exe.jdk

Das Problem tritt auf, wenn diese Datei auf Java 8 verweist, da IntelliJ IDEA nicht mehr auf Java 8 ausgeführt wird und stattdessen Java 11 erwartet. Java 11 ist bereits gebündelt, aber diese Datei überschreibt es, daher das Problem.

Überprüfen Sie dieses Dokument auch auf andere Möglichkeiten, um die IDE-Laufzeit zu überschreiben, und stellen Sie sicher, dass keine dieser Methoden wirksam ist:

IDEA_JDK_64 Die Umgebungsvariable kann auch die Standardlaufzeit überschreiben. Sie müssen sie deaktivieren.

Ein weiteres mögliches Problem besteht darin, dass die gebündelte Laufzeit im jbrUnterverzeichnis beschädigt wird. Stellen Sie sicher , es durch Ausführen von java -versioninnen IDE_HOME\jbr\bin. Die Neuinstallation von IDE sollte helfen.

Siehe auch eine verwandte Diskussion im IntelliJ IDEA-Forum .

Das Problem wird in YouTrack untersucht .

CrazyCoder
quelle
Wäre es möglich, dass Intellij die Integrität der gebündelten JVM-Dateien überprüft? Oder passiert das nicht?
Thorbjørn Ravn Andersen
Es ist ein neues Problem und wir untersuchen immer noch, warum es passiert. Ja, im Idealfall sollte IDE die Integrität der JVM überprüfen, dies kann jedoch über die plattformspezifischen Starter problematisch sein.
CrazyCoder
Sind Sie sicher, dass die Datei nicht "idea.exe.jdk" (oder "idea64.exe.jdk") ist ...?
Jaroslav Záruba
1
@ JaroslavZáruba hat die Antwort aktualisiert.
CrazyCoder
1

Stellen Sie sicher, dass Ihre IntelliJ-Version die Ausführung unter Java 11 unterstützt (nicht nur das Kompilieren damit). Wenn Sie Windows verwenden und nur die Variable JAVA_HOME definiert haben, starten Sie den Computer neu.

Jorge Yanes Diez
quelle
Ich verwende die neueste IntelliJ IDEA Ultimate-Version, die Java 11 unterstützen sollte. Ein Neustart hat das Problem leider nicht behoben.
Cerus
1

Ab 2020.1 befindet sich der Konfigurationsordner im %APPDATA%/Roaming/JetBrains/<product><version>Ordner.

Ich musste meine * .jdk-Datei in diesem Ordner löschen, damit sie sich selbst neu konfigurierte.

Coderatchet
quelle
Vielen Dank für das Teilen, aber welche neuen Informationen werden zur akzeptierten Antwort hinzugefügt?
CrazyCoder