IntelliJ IDEA ne démarre pas: impossible de charger une classe JDK: com.sun.jdi.Field

13

Lorsque j'essaie de démarrer IntelliJ, je reçois une fenêtre contextuelle disant

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

C'est vraiment étrange parce que j'ai pointé la variable JAVA_HOMEet PATHvers le JDK Java 11.

Cerus
la source
Genre pf chose délicate à déboguer à distance mais 1) montrez-nous votre variable JAVA_HOME. 2) Vérifiez s'il n'est pas remplacé dans le fichier de configuration IntelliJ jetbrains.com/help/idea/switching-boot-jdk.html 3) en dernier recours, essayez de le modifier via le fichier de configuration
Lesiak
@Lesiak Changer le JDK dans le fichier .jdk a aidé! Merci!
Cerus
Téléchargez IntelliJ avec un JDK. Cela devrait fonctionner hors de la boîte
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen pas si a été modifié par intellij-support.jetbrains.com/hc/articles/206544879 et l'emplacement d'exécution personnalisé est devenu invalide, voir ma réponse pour plus de détails.
CrazyCoder
@CrazyCoder True. Félicitations à l'équipe pour avoir créé une distribution "apporte son propre jvm" - cela rend les choses beaucoup plus faciles!
Thorbjørn Ravn Andersen

Réponses:

28

Ce problème se produit si vous remplacez le JetBrains Runtime par défaut par une autre version, IDE enregistre l'emplacement de ce runtime sous le fichier CONFIG\idea64.exe.jdk , puis ce runtime devient invalide (supprimé ou corrompu) ou incompatible avec la nouvelle version IDE.

La solution consiste à supprimer idea64.exe.jdk/ idea.exe.jdkfichier pour que IDE utilise le JetBrains Runtime fourni par défaut (le nom du fichier peut être différent selon le produit que vous utilisez, donc le guide général est de supprimer les *.jdkfichiers dans le répertoire de configuration IDE ).

Voici le fichier qui devrait être supprimé pour la plupart des utilisateurs de Windows:

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

Le problème se produit lorsque ce fichier pointe vers Java 8 car IntelliJ IDEA ne s'exécute plus sur Java 8 et attend Java 11 à la place. Java 11 est déjà fourni, mais ce fichier le remplace, d'où le problème.

Veuillez également consulter ce document pour les autres moyens possibles de remplacer le runtime IDE et assurez-vous qu'aucun de ceux-ci n'est en vigueur:

IDEA_JDK_64 La variable d'environnement peut également remplacer le runtime par défaut, vous devez le désactiver.

Un autre problème possible est que le runtime fourni dans le jbrsous-répertoire est corrompu. Vérifiez-le en courant java -versionà l' intérieur IDE_HOME\jbr\bin. La réinstallation de l'IDE devrait aider.

Voir également une discussion connexe dans le forum IntelliJ IDEA .

Le problème fait l' objet d'une enquête dans YouTrack .

CrazyCoder
la source
Serait-il possible qu'Intellij vérifie l'intégrité des fichiers JVM fournis? Ou n'est-ce pas quelque chose qui se passe?
Thorbjørn Ravn Andersen
C'est un nouveau problème et nous cherchons toujours pourquoi cela se produit. Oui, l'IDE devrait idéalement vérifier l'intégrité de la JVM, mais cela peut être problématique via les lanceurs spécifiques à la plate-forme.
CrazyCoder
Êtes-vous sûr que le fichier n'est pas "idea.exe.jdk" (ou "idea64.exe.jdk") ...?
Jaroslav Záruba
1
@ JaroslavZáruba a mis à jour la réponse.
CrazyCoder
1

Assurez-vous que votre version IntelliJ prend en charge l'exécution sur Java 11 (pas seulement la compilation avec elle). De plus, si vous utilisez Windows et que vous venez de définir la variable JAVA_HOME, redémarrez.

Jorge Yanes Diez
la source
J'utilise la dernière version d'IntelliJ IDEA Ultimate qui devrait prendre en charge Java 11. Un redémarrage n'a malheureusement pas résolu le problème.
Cerus
1

à partir de 2020.1, le dossier de configuration se trouve dans le %APPDATA%/Roaming/JetBrains/<product><version>dossier.

J'ai dû supprimer mon fichier * .jdk dans ce dossier pour qu'il se reconfigure.

coderatchet
la source
Merci d'avoir partagé, mais quelles nouvelles informations ajoute-t-elle à la réponse acceptée?
CrazyCoder