web-dev-qa-db-fra.com

A été compilé par une version plus récente du Runtime Java (fichier de classe version 57.0)

Je reçois ce problème en utilisant IntelliJ. Mais j'ai la dernière version de tout ce qui vient d'être installé sur mon système.

... a été compilé par une version plus récente du Runtime Java (fichier de classe version 57.0), cette version du Runtime Java ne reconnaît que les versions des fichiers de classe jusqu'à 52.

J'ai réglé:

CHEMIN en tant que C:\Program Files\Java\jdk-13 Java_HOME en tant que: C:\Program Files\Java\jdk-13 JRE_HOME en tant que: C:\Program Files\Java\jre1.8.0_221

J'ai tracé le chemin, essayé de trouver un changement dans la structure du projet

MESSAGE D'ERREUR COMPLET:

H:\087-Java\HelloWorld\src>Java com.codewithmosh.Main
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" Java.lang.UnsupportedClassVersionError: com/codewithmosh/Main has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at Java.lang.ClassLoader.defineClass1(Native Method)
        at Java.lang.ClassLoader.defineClass(Unknown Source)
        at Java.security.SecureClassLoader.defineClass(Unknown Source)
        at Java.net.URLClassLoader.defineClass(Unknown Source)
        at Java.net.URLClassLoader.access$100(Unknown Source)
        at Java.net.URLClassLoader$1.run(Unknown Source)
        at Java.net.URLClassLoader$1.run(Unknown Source)
        at Java.security.AccessController.doPrivileged(Native Method)
        at Java.net.URLClassLoader.findClass(Unknown Source)
        at Java.lang.ClassLoader.loadClass(Unknown Source)
        at Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at Java.lang.ClassLoader.loadClass(Unknown Source)
        at Sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
11
nobism

Vous devez vérifier le paramètre d'environnement PATH. C:\Program Files\Java\jdk-13 Que vous avez actuellement n'est pas correct. Veuillez vous assurer que vous disposez du sous-répertoire bin pour la dernière version de JDK en haut de la liste PATH.

L'exécutable Java.exe Est dans le répertoire C:\Program Files\Java\jdk-13\bin, C'est donc ce que vous devez avoir dans PATH.

Utilisez cet outil pour vérifier ou modifier rapidement les variables d'environnement sous Windows. Il permet de réorganiser les entrées PATH. Il mettra également en évidence les chemins non valides en rouge.

Si vous souhaitez que votre code s'exécute également sur les versions JDK inférieures, modifiez la version de bytecode cible dans l'EDI. Voir cette réponse pour les captures d'écran pertinentes.

Voir aussi cette réponse pour les versions de fichier de classe Java. Ce qui se passe, c'est que vous construisez le code avec Java 13 et 13 langage) niveau bytecode (cible) et essayez de l'exécuter avec Java 8 qui est la première (par défaut) Java version selon la variable PATH configuration.

La solution consiste à avoir le répertoire Java 13 bin dans PATH ci-dessus ou au lieu de Java 8. Sous Windows, vous pouvez C:\Program Files (x86)\Common Files\Oracle\Java\javapath a été ajouté automatiquement à PATH, ce qui indique Java 8 maintenant:

javapath

Si c'est le cas, supprimez la partie en surbrillance de PATH puis déconnectez-vous/connectez-vous ou redémarrez pour que les modifications soient effectives. Vous devez redémarrer en tant qu'administrateur pour pouvoir modifier les variables système (voir le bouton en haut à droite de la colonne des variables système).

8
CrazyCoder

je fais face au même problème lorsque j'ai installé jre par Oracles et résolu ce problème après mes recherches.

je suis déplacé le chemin de l'environnement C:\Program Files (x86)\Common Files\Oracle\Java\javapath Ci-dessous de H:\Program Files\Java\jdk-13.0.1\bin

Comme ça:-

Chemin

H:\Program Files\Java\jdk-13.0.1\bin
C:\Program Files (x86)\Common Files\Oracle\Java\javapath

OR

Chemin

%Java_HOME%
%JRE_HOME%

1
S Kumar

J'ai également rencontré un problème similaire qui est demandé ici . Le problème était que certaines applications sont livrées avec leur propre JRE et parfois le JDK installé apparaît à un niveau de priorité inférieur dans le chemin de l'environnement. Maintenant, il y a deux options:

  1. Désinstallez l'autre application qui possède son propre JDK/JRE.
  2. Parfois, il n'est pas possible de supprimer l'autre application, ce qui était mon cas. J'ai donc déplacé JDk installé par moi vers un niveau de priorité plus élevé dans le chemin de l'environnement.

enter image description here

J'ai également supprimé le chemin d'accès comme suggéré par @CrazyCoder

0
Karan

J'ai eu un problème similaire avec IntelliJ lorsque j'ai essayé d'exécuter certains scripts Groovy. Voici comment je l'ai résolu.

Allez dans "Structure du projet" -> "Projet" -> "Niveau de langue du projet" et sélectionnez "SDK par défaut". Cela devrait utiliser le même SDK pour tous les modules du projet.

0
Memin