Question Comment réparer java.lang.UnsupportedClassVersionError: Version major.minor non prise en charge


J'essaie d'utiliser Bloc-notes ++ comme mon outil tout-en-un éditer, exécuter, compiler, etc.

j'ai JRE installé, et j'ai installé ma variable de chemin dans le répertoire ... / bin.

Lorsque je lance mon "Hello world" dans Notepad ++, j'obtiens ce message:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

Je pense que le problème ici concerne les versions; une version de Java peut être ancienne ou trop récente.

  1. Comment je le répare?
  2. Dois-je installer le JDK et configurer ma variable de chemin vers le JDK au lieu de JRE?
  3. Quelle est la différence entre le PATH variable dans JRE ou JDK?

1384
2018-04-30 11:28


origine


Réponses:


Le numéro de version indiqué décrit la version de JRE avec laquelle le fichier de classe est compatible.

Les principaux nombres signalés sont:

Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

(La source: Wikipédia)

Pour résoudre le problème, vous devez essayer d'exécuter le code Java avec une version plus récente de Java JRE ou spécifier le paramètre cible dans le compilateur Java pour demander au compilateur de créer du code compatible avec les versions antérieures de Java.

Par exemple, pour générer des fichiers de classe compatibles avec Java 1.4, utilisez la ligne de commande suivante:

javac -target 1.4 HelloWorld.java

Avec les versions plus récentes du compilateur Java, vous risquez d'obtenir un avertissement indiquant que le chemin de la classe bootstrap n'est pas défini. Plus d'informations sur cette erreur sont disponibles dans le blog Nouvel avertissement javac pour la définition d'une source plus ancienne sans bootclasspath.


1773
2017-07-11 11:59



java.lang.UnsupportedClassVersionError Cela se produit en raison d'un JDK plus élevé pendant la compilation et d'un JDK inférieur pendant l'exécution.


328
2018-06-28 06:48



Dans Eclipse, je suis juste allé à la commande de menu Fenêtre -> Préférences -> Java -> Compilateur puis définissez "Niveau de conformité du compilateur" sur 1.6.


111
2018-05-02 18:58



Ne t'inquiète pas, je l'ai résolu.

C'est en fait simple - vous devez installer les deux JRE / JDK avec la même version.

JRE 6 -> JDK 6

JRE 7 -> JDK 7

Etc.


55
2018-05-04 06:23



Cette erreur signifie que vous essayez de charger un fichier "classe" Java qui a été compilé avec une version plus récente de Java que celle que vous avez installée.

Par exemple, votre .class le fichier a pu être compilé pour JDK 7, et vous essayez de l'exécuter avec JDK 6.

Donc la solution est de:

  • Mettez à niveau votre environnement d'exécution Java ou
  • Recompilez la classe si vous avez la source, en utilisant votre compilateur Java local (si vous en avez un).

    javac FileName.java

Pour les développeurs, cela peut arriver si un autre développeur vérifie dans un fichier .class, et ils ont une version plus récente de Java que vous avez!


37
2018-02-20 19:02



Vous essayez d'exécuter votre programme avec une version Java qui ne prend pas en charge la version dans laquelle le code a été compilé. Donc, fondamentalement, vous devez avoir compilé votre code avec une version supérieure et essayer de l'exécuter en utilisant une version inférieure.

Comme vous obtenez

Unsupported major.minor version 51.0

et version 51,0 Correspond à J2SE 7 vous avez très probablement compilé votre code dans Java 7 et essayé de l'exécuter en utilisant une version inférieure. Vérifiez ce que java -versionaffiche. Ce devrait être la version Java 7. Si ce n'est pas le cas, faites les changements appropriés dans PATH / JAVA_HOME. Ou vous pouvez compiler avec la même version que vous essayez d'exécuter le code. Si les configurations sont confuses, vous pouvez toujours donner un chemin absolu /home/user/jdk1.7.0_11/bin/javac et /home/user/jdk1.7.0_11/bin/java.


20
2017-10-01 08:51



J'ai eu une situation similaire sur Mac, et le processus suivant a fonctionné pour moi:

Dans le terminal, tapez

vi ~/.profile

Ensuite, ajoutez cette ligne dans le fichier et enregistrez

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

où la version est celle sur votre ordinateur, comme 1.7.0_25.

Quittez l'éditeur, puis tapez la commande suivante pour la rendre effective

source ~/.profile 

Puis tapez java -version pour vérifier le résultat

java -version 

Quel est .profile fichier?

Le fichier .profile est un fichier caché. C'est un fichier facultatif qui indique au système les commandes à exécuter lorsque l'utilisateur dont le fichier de profil est connecté. Par exemple, si mon nom d'utilisateur est bruno et qu'il y a un fichier .profile dans / Users / bruno /, tout son contenu sera exécuté pendant la procédure de connexion.

La source: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515


17
2018-02-11 06:55



Dans le menu d'Eclipse Fenêtre -> Préférences -> Java -> Compilateur vérifiez également "Configurer les paramètres spécifiques au projet".

Si vous avez toujours l'erreur avec la même version Java: essayez de supprimer manuellement le dossier de construction de votre projet. Puis redémarrez Eclipse.


15
2017-08-06 10:24



Vous pouvez avoir une bibliothèque JAR compilée en Java 7 et Java 6 en Java Runtime. Cela pourrait arriver avec certaines nouvelles bibliothèques.


13
2018-06-25 12:51



Le problème le plus courant est la mauvaise configuration de votre JAVA_HOME variable qui doit pointer vers la bonne bibliothèque Java Development Kit, si vous en avez plusieurs installés.

Pour trouver où se trouve le dossier Java SDK, exécutez les commandes suivantes:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian / Ubuntu

Pour vérifier quel java (openjdk) vous avez installé, vérifiez via:

dpkg -l "openjdk*" | grep ^i

ou:

update-java-alternatives -l

Pour le changer, utilisez:

update-alternatives --config java

Préfixe avec sudo si nécessaire.

pour sélectionner la version Java alternative.

Ou vérifiez quels sont disponibles pour l'installation:

apt-cache search ^openjdk

Préfixe avec sudo si nécessaire.

Ensuite, vous pouvez installer, par exemple:

apt-get install openjdk-7-jre

Préfixe avec sudo si nécessaire.

Fedora, Oracle Linux, Red Hat

Installer / mettre à jour le paquet approprié via:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

le java-1.7.0-openjdk package contient uniquement Java Runtime Environment. Si vous voulez développer des programmes Java, installez le java-1.7.0-openjdk-devel paquet.

BSD

Il y a un paquet OpenJDK 7 dans la collection Ports de FreeBSD appelé openjdk7 qui doit probablement être reconfiguré.

Voir: Page wiki OpenJDK.

les fenêtres

Installez simplement la bibliothèque Java SE Development Kit appropriée Site Oracle ou installez

Jenkins

Si vous rencontrez ce problème avec Jenkins, consultez:

Cependant, en sélectionnant la bonne version de Java (plus récente) avec update-alternatives devrait marcher.


13
2018-04-04 12:16