J'essaie d'utiliser Notepad ++ comme outil tout-en-un pour éditer, exécuter, compiler, etc.
J'ai JRE installé et j'ai configuré ma variable de chemin d'accès au .../bin
répertoire.
Lorsque j'exécute 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; certaines versions de Java peuvent être anciennes ou trop nouvelles.
- Comment je le répare?
- Dois-je installer le JDK et configurer ma variable de chemin d'accès au JDK au lieu de JRE?
- Quelle est la différence entre la
PATH
variable dans JRE ou JDK?
Réponses:
Le numéro de version indiqué décrit la version du JRE avec laquelle le fichier de classe est compatible.
Les principaux chiffres rapportés sont les suivants:
(Source: Wikipedia )
Pour résoudre le problème réel, vous devez essayer d'exécuter le code Java avec une version plus récente de Java JRE ou de spécifier le paramètre cible au compilateur Java pour demander au compilateur de créer du code compatible avec les versions Java antérieures.
Par exemple, afin de générer des fichiers de classe compatibles avec Java 1.4, utilisez la ligne de commande suivante:
Avec les versions plus récentes du compilateur Java, vous obtiendrez probablement un avertissement indiquant que le chemin de la classe d'amorçage n'est pas défini. Plus d'informations sur cette erreur sont disponibles dans un article de blog Nouvel avertissement javac pour définir une source plus ancienne sans bootclasspath .
la source
java.lang.UnsupportedClassVersionError
se produit en raison d'un JDK supérieur pendant le temps de compilation et d'un JDK inférieur pendant l'exécution.la source
/etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
) en la version utilisée pour la compilation avec javac l'a résolusudo update-alternatives --config java
de le faire.Dans Eclipse, je suis simplement allé à la commande de menu Fenêtre -> Préférences -> Java -> Compilateur , puis j'ai défini "Niveau de conformité du compilateur" sur 1.6.
la source
Ne vous inquiétez 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.
la source
Cette erreur signifie que vous essayez de charger un fichier "classe" Java qui a été compilé avec une version de Java plus récente que celle que vous avez installée.
Par exemple, votre
.class
fichier aurait pu être compilé pour JDK 7 et vous essayez de l'exécuter avec JDK 6.La solution consiste donc à:
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 se produire si un autre développeur archive un fichier .class et qu'il a une version de java plus récente que la vôtre!
la source
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
et la version 51.0 correspond à J2SE 7, vous avez très probablement compilé votre code en Java 7 et essayé de l'exécuter en utilisant une version inférieure. Vérifiez ce qui
java -version
s'affiche. Ce devrait être la version Java 7. Sinon, apportez les modifications appropriées dans le PATH / JAVA_HOME. Ou vous pouvez compiler avec la même version que vous essayez d'exécuter le code. Si les configurations sont déroutantes, vous pouvez toujours donner un chemin absolu/home/user/jdk1.7.0_11/bin/javac
et/home/user/jdk1.7.0_11/bin/java
.la source
J'ai eu une situation similaire sur Mac et le processus suivant a fonctionné pour moi:
Dans le terminal, saisissez
Ajoutez ensuite cette ligne dans le fichier et enregistrez
où version est celle de votre ordinateur, telle que
1.7.0_25
.Quittez l'éditeur, puis tapez la commande suivante pour qu'elle devienne effective
Tapez ensuite java -version pour vérifier le résultat
Qu'est-ce qu'un
.profile
fichier?Source: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515
la source
Dans le menu Eclipse Fenêtre -> Préférences -> Java -> Compilateur, cochez é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. Redémarrez ensuite Eclipse.
la source
Vous pouvez avoir une bibliothèque JAR compilée dans Java 7, et vous n'avez que Java 6 en tant que Java Runtime. Cela pourrait arriver avec de nouvelles bibliothèques.
la source
Le problème le plus courant est une mauvaise configuration de votre
JAVA_HOME
variable qui devrait pointer vers la bibliothèque Java Development Kit appropriée, si vous en avez installé plusieurs.Pour trouver l'emplacement du dossier Java SDK, exécutez les commandes suivantes:
Debian / Ubuntu
Pour vérifier quel java (openjdk) vous avez installé, vérifiez via:
ou:
Pour le changer, utilisez:
Préfixez
sudo
si nécessaire.pour sélectionner la version java alternative.
Ou vérifiez ceux qui sont disponibles pour l'installation:
Préfixez
sudo
si nécessaire.Ensuite, vous pouvez installer, par exemple:
Préfixez
sudo
si nécessaire.Fedora, Oracle Linux, Red Hat
Installez / mettez à niveau le package approprié via:
BSD
Il y a un paquet OpenJDK 7 dans la collection de ports FreeBSD appelé openjdk7 qui a probablement besoin d'être reconfiguré.
Voir: page wiki OpenJDK .
les fenêtres
Installez simplement la bibliothèque du kit de développement Java SE appropriée à partir du site Oracle ou installez
Jenkins
Si vous rencontrez ce problème avec Jenkins, voir:
Cependant, la sélection de la bonne version de Java (plus récente) avec
update-alternatives
devrait fonctionner.la source
J'ai rencontré le même problème lorsque je travaillais avec un script Ant pour créer mon application.
J'utilise Eclipse pour le développement de mon application et j'ai changé la version du compilateur dans les propriétés de construction du projet. Mais cela n'a pas fonctionné pour moi. Ensuite, j'ai découvert que je peux fournir la version du compilateur dans le script Ant.
J'ai modifié le script Ant dans la section où il compile les fichiers Java.
Cela a fonctionné pour moi pour résoudre le problème mineur majeur non pris en charge.
la source
Lorsque j'ai installé JDK 1.7, le problème a été résolu.
la source
J'ai eu le même problème avec un projet écrit en 1.7 et j'ai essayé de l'exécuter en 1.6.
Ma solution dans Eclipse:
Faites un clic droit sur les propriétés de votre projet -> Chemin de génération Java -> Bibliothèques
Sélectionnez votre bibliothèque système JRE et cliquez sur Modifier à droite, puis choisissez le JRE cible.
Accédez maintenant au compilateur Java sur la gauche et modifiez le niveau de conformité du compilateur à votre cible.
Cela a fonctionné pour moi.
la source
Comme indiqué ailleurs par plusieurs personnes, le programme Java est exécuté sur une version plus ancienne de Java que celle pour laquelle il a été compilé. Il doit être «compilé de manière croisée» pour une compatibilité descendante. En d'autres termes, il existe une incompatibilité entre les versions Java source et cible.
La modification des options dans les menus Eclipse ne répond pas à l'affiche originale, qui a déclaré qu'il n'utilisait pas Eclipse. Sur OpenJDK javac version 1.7, vous pouvez effectuer une compilation croisée pour 1.6 si vous utilisez des paramètres
-source
et-target
, en plus, fournissez le fichier rt.jar de la version cible (c'est-à-dire la plus ancienne) au moment de la compilation. Si vous installez réellement 1.6 JRE, vous pouvez pointer vers son installation (par exemple, /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar sur Ubuntu, / usr / jdk / jdk1. 6.0_60 / jre / lib / rt.jar sur SunOS apparemment. Désolé, je ne sais pas où il se trouve sur un système Windows). Ainsi:Il semble que vous puissiez simplement télécharger rt.jar depuis Internet et le pointer vers lui. Ce n'est pas trop élégant cependant:
la source
Basé sur ceci...
Dans Eclipse, faites un clic droit sur le projet dans l'explorateur de packages:
Chemin de construction -> Configurer le chemin de construction
En dessous de:
Chemin de génération Java -> Bibliothèques -> Ajouter une bibliothèque -> Bibliothèque système JRE -> JREs installés -> Recherche .
Ajoutez le JRE requis en sélectionnant la bibliothèque dans la liste disponible une fois la recherche terminée.
la source
Si vous utilisez Maven, définissez votre niveau de compilation Java. Ouvrez une ligne de commande et écrivez
java -version
pour votre niveau de compilation:Si vous utilisez IntelliJ IDEA, sélectionnez projet → Fichier → Paramètres → Build Execution Deployment → Compilateur → Compilateur Java . Ensuite, changez le code d'octet en 1.7 comme cette image:
la source
Si vous rencontrez ce problème lors de l'utilisation de Maven , vous pouvez compiler votre code à l'aide du plug-in Maven Compiler .
MISE À JOUR: réglez
source
ettarget
sur1.8
, si vous utilisez JDK 8.la source
J'ai eu le même message d'erreur lors de l'exécution de Ant à partir d'Eclipse, mais les autres solutions mentionnées ici n'ont pas résolu mon problème. Le plus drôle était que l'exécution d'Ant à partir de la ligne de commande Windows fonctionnait bien, donc cela devait être un problème de configuration dans Eclipse.
Il s'est avéré que sous Eclipse, vous pouvez spécifier l'environnement avec lequel Ant doit être exécuté et cela a été défini comme un JRE au lieu d'un JDK.
la source
Cette erreur signifie que le JRE utilisé pour exécuter votre code de classe ne reconnaît pas la version de Java utilisée. Généralement parce que la version de Java qui a généré votre fichier de classe (c'est-à-dire compilé) est plus récente.
Pour y remédier, vous pouvez soit
a) Compilez vos sources Java avec la même version ou une version plus ancienne du compilateur Java qui sera utilisée pour l'exécuter. c'est-à-dire installer le JDK approprié.
b) Compilez vos sources Java avec la nouvelle version du compilateur Java mais en mode de compatibilité. c'est à dire utiliser le
-target
paramètre.c) Exécutez vos classes compilées dans un JRE qui est la même version ou une version plus récente que le JDK utilisé pour compiler les classes.
Vous pouvez vérifier les versions que vous utilisez actuellement
javac -version
pour le compilateur etjava -version
pour l'exécution.Pour la compilation, certainement, installez et configurez le JDK spécifique que vous souhaitez.
Pour l'exécution, vous pouvez utiliser celui fourni avec le JDK ou un JRE autonome, mais peu importe, assurez-vous que vous avez installé les bonnes versions et que vous avez configuré votre PATH de sorte qu'il n'y ait pas de surprise.
La variable d'environnement PATH indique au shell de commande où chercher la commande que vous tapez. Lorsque vous tapez
java
, l'interpréteur de commandes va parcourir tous les emplacements spécifiés dans laPATH
variable, de gauche à droite, pour trouver l'java
exécutable d'exécution approprié à exécuter. Si vous avez plusieurs versions de Java installées - c'est-à-dire que vous avez lejava
exécutable se trouve à plusieurs emplacements spécifiés dans la variable PATH, alors la première rencontrée en allant de gauche à droite sera celle qui sera exécutée.La commande du compilateur est
javac
fournie uniquement avec le JDK. La commande runtime estjava
fournie avec le JDK et se trouve dans le JRE.Il est probable que vous ayez une version (51.0 = Java 7)
javac
installée, et que vous ayez également la même versionjava
installée, mais qu'une autre version précédente dejava
apparaît plus tôt dans le PATH et est donc invoquée au lieu de celle que vous attendez .la source
Vous avez utilisé une version supérieure du JDK pour compiler et essayer d'exécuter à partir d'une version inférieure de JDK / JRE .
Pour vérifier cela, consultez les informations de version:
Ils seront différents et javac aura un numéro de version supérieur.
Pour contourner ce problème, exécutez en utilisant java à partir de la version JDK ou si vous avez un JRE / JDK plus récent qui fonctionnera également.
which javac
vous indiquera l'emplacement, par exemple/usr/bin/javac
,. Exécutez simplement en utilisant/usr/bin/java <program>
.OU vous pouvez définir la variable d'environnement comme une solution permanente.
la source
J'ai eu ce problème lorsque je suis revenu à Java 6 et j'ai essayé d'exécuter des classes précédemment compilées avec Java 7. Ce qui a fonctionné pour moi, ce sont les Préférences> java> compilateur -> définir le niveau de conformité à 1.6 et surtout "configurer les paramètres du projet" ..
la source
Aujourd'hui, ce message d'erreur est apparu dans notre Tomcat 7 sur Ubuntu 12.04.2 LTS (Precise Pangolin):
L' application Struts est compilée avec Java 7.
Il s'est avéré que quelqu'un utilise "service tomcat [stop / start]" pour redémarrer Tomcat 7,
Ce qui provoque l'erreur "Unsupported major.minor version 51.0".
Lorsque nous avons utilisé "/etc/init.d/tomcat7 [stop / start]" pour redémarrer Tomcat 7, le problème a été résolu.
la source
Je l'ai résolu. L'Iran:
L'erreur est trompeur,
Unsupported major.minor version 51.0
. Cela donne l'impression que la version 51 (Java 7) n'est pas prise en charge. Et nous devons utiliser Java 6.L'erreur aurait dû être:
la source
Votre fichier Java est compilé avec une version différente (version de compilateur supérieure) de la version (version d'exécution inférieure) avec laquelle vous essayez de l'exécuter.
Il est fondamental de comprendre que les classes compilées avec des versions inférieures devraient s'exécuter dans les versions supérieures ultérieures. Mais le contraire (compilé avec une version de compilateur supérieure et essayant de l'exécuter avec une version d'exécution inférieure) n'est tout à fait pas possible parfois.
Par conséquent, cette erreur s'affiche lorsque vous essayez d'exécuter votre programme. Version major.minor xx non prise en charge
(Source: oracle.com .)
la source
Oh Mac OS XI a pu résoudre ce problème en définissant la variable JAVA_HOME:
la source
Donnons d'abord quelques notions de base ...
JRE est un composant de NetBeans / Eclipse / autonome qui va vous fournir des bibliothèques, JVM, des plugins Java et Java web start. Notez qu'il ne fournit ni compliers ni débogueurs.
JDK est le sur-ensemble de JRE avec les complices et les débogueurs.
Ainsi, lorsque vous aurez votre bibliothèque par défaut en tant que JRE au lieu de JDK, vous passerez un bon moment à importer des éléments, mais elle ne se compilera pas.
Au lieu de cela, définissez votre chemin vers JDK (j'utilise NetBeans, et je les définis en utilisant netbeans.conf dans netbeans / etc / netbeans.conf et changez le chemin).
la source
J'ai eu le problème où je devais exécuter une compilation Maven sur mon projet à partir de la ligne de commande afin d'exécuter mes tests unitaires; si j'ai apporté une modification à la classe de test et laissé Eclipse la recompiler automatiquement, alors j'ai eu l'erreur "Unsupported major.minor version 51.0".
J'ai JDK6 et JDK7 installés, mais tous mes paramètres JRE pointaient vers 1.6, à la fois dans le pom et dans la page des propriétés du projet dans Eclipse. Aucune quantité de projet de mise à jour Maven et / ou d'actualisation n'a résolu ce problème.
Enfin, j'ai essayé de fermer le projet et de le rouvrir, et cela a semblé le réparer! HTH
la source
Vous avez compilé votre classe Java avec JDK 7 et vous essayez d'exécuter la même classe sur JDK 6.
la source
la source
La réponse est au problème:
Exception dans le thread "principal" java.lang.UnsupportedClassVersionError: edu / stevens / cs549 / dhts / main / LocalContext: Unsupported major.minor version 52.0
J'avais le même problème. Pour ceux qui rencontraient ce problème dans les instances AWS ec2, et qui ont en quelque sorte été redirigés ici vers cette question. Je réponds pour ceux-ci, et je voudrais partager comment je l'ai fait. J'avais des problèmes parce que les instances Amazon EC2 exécutaient la version 1.7 de Java et peut-être que mon projet n'était pas compatible avec celui-ci parce que j'utilisais Maven et qu'il était en quelque sorte préconfiguré pour Java 1.8. J'ai donc installé une nouvelle version de java:
sudo yum -y install java-1.8.0
Et puis l'étape importante est de supprimer l'ancienne version:
N'oubliez pas de le supprimer après avoir installé la nouvelle version, sinon il utiliserait continuellement la même version plus ancienne et j'espère qu'il résoudra votre problème, ce qui s'est produit dans mon cas.
la source