Comment réparer java.lang.UnsupportedClassVersionError: non pris en charge majeure.version mineure
Je suis en train d'utiliser Notepad++ que mon tout-en-un outil de modifier, d'exécuter, de compiler, etc.
J'ai JRE installé, et j'ai mis ma variable de chemin d'accès à la .../bin
répertoire.
Quand 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, c'est sur les versions; certaines versions de Java peut être vieux ou trop nouveau.
- Comment puis-je résoudre ce problème?
- Dois-je installer le JDK et le programme d'installation de ma variable de chemin d'accès pour le JDK au lieu de JRE?
- Quelle est la différence entre le
PATH
variable dans JRE ou JDK?
avez-vous installé le jdk ainsi ? jre Java RunTime environment , Pour créer des applications java , vous avez besoin du jdk ainsi
oui je l'ai fait, et maintenant, ma variable path pointe vers l'emplacement du jdk est. pourtant, j'ai toujours ce "unsupported version mineure de 51,0 d'erreur" vous pensez que je doit installer l'ancienne version de jdk? je m à l'aide du jdk 1.7.0
Cela m'est arrivé sur Mac OS X, lorsque j'ai eu des problèmes en raison de l'étrange Apple, la version 6 de java et Oracle java 7 sur mac OSX ces jours-ci. version courte: Compiler avec JDK7, Courir avec JDK6, obtenir cela.
En java ClassName devrait Être de Commencer avec une lettre majuscule 😉
Pour El Capitaine, cette réponse fixe pour moi: stackoverflow.com/a/34201991/1615594
oui je l'ai fait, et maintenant, ma variable path pointe vers l'emplacement du jdk est. pourtant, j'ai toujours ce "unsupported version mineure de 51,0 d'erreur" vous pensez que je doit installer l'ancienne version de jdk? je m à l'aide du jdk 1.7.0
Cela m'est arrivé sur Mac OS X, lorsque j'ai eu des problèmes en raison de l'étrange Apple, la version 6 de java et Oracle java 7 sur mac OSX ces jours-ci. version courte: Compiler avec JDK7, Courir avec JDK6, obtenir cela.
En java ClassName devrait Être de Commencer avec une lettre majuscule 😉
Pour El Capitaine, cette réponse fixe pour moi: stackoverflow.com/a/34201991/1615594
OriginalL'auteur ERJAN | 2012-04-30
Vous devez vous connecter pour publier un commentaire.
Le numéro de version indiqué décrit la version de la JRE le fichier de classe est compatible avec.
Signalés, les grands nombres sont:
(Source: Wikipédia)
Pour résoudre le problème, vous devriez essayer d'exécuter le code Java avec une version plus récente de Java JRE ou spécifier le paramètre target pour le compilateur Java pour demander au compilateur de créer un code compatible avec les anciennes versions de Java.
Par exemple, dans le but de générer des fichiers de classe compatible avec Java 1.4, utilisez la ligne de commande suivante:
Avec les nouvelles versions du compilateur Java vous êtes susceptible d'obtenir un avertissement à propos de la classe de bootstrap chemin d'accès n'étant pas défini. Plus d'informations sur cette erreur est disponible dans un billet de blog Nouveau javac avertissement pour le réglage d'une ancienne source sans bootclasspath.
Cette réponse n'explique pas comment le résoudre que la question posée?
C'est une bonne solution pour la compilation d'une version antérieure à partir d'Eclipse directement: stackoverflow.com/a/16345710/2091700
DANS le projet eclipse=>Proerties=>compilateur java; set ", le compilateur niveau de conformité" pour la version en fonction de votre environnement jre ou jdk. Comme pour moi, c'est de 1,6 pour jre 1.6
Cela peut se produire lorsque les sources du compilateur est mis en non-conformité avec la compilation de JRE/JDK. Par exemple, j'ai trouvé les valeurs ci-dessous à partir d'eclipse .le dossier des paramètres org.eclipse.jdt.de base.compilateur.respect=1.7, org.eclipse.jdt.de base.compilateur.source=1.7, org.eclipse.jdt.de base.compilateur.codegen.targetPlatform=1.7. Et mon compilateur a été 1.6.0_32. Le problème a été résolu après un changement de valeurs à 1.6. La question a vu le jour après, j'ai copié le projet à partir d'un autre espace de travail où j'ai été à l'aide du JDK 1.7 🙁
OriginalL'auteur Juha Palomäki
java.lang.UnsupportedClassVersionError
se produit en raison d'une hausse de la JDK lors de la compilation et de la baisse des JDK au cours de l'exécution./etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
) à la version utilisée pour la compilation avec javac résoluComment puis-je faire au-dessus de changement?
Projet -> Propriétés -> Java Compilateur Activer les paramètres spécifiques d'un projet. Ensuite, sélectionnez Compilateur Niveau de Conformité à 1,7, 1.6 ou 1.5, construire et tester votre application.
Plus de détails, veuillez voir le lien vivekraicdac.blogspot.dans
utilisation
sudo update-alternatives --config java
de le faire.OriginalL'auteur Vivek Kumar Ray
Dans Eclipse, je suis juste allé à la commande de menu Fenêtre -> Préférences -> Java -> Compilateur puis réglez "Compilateur niveau de conformité" pour de 1,6.
Merci. Il est intéressant de noter que la configuration d'Eclipse par défaut de l'environnement d'exécution (JRE qui va dans le build path) est un distinct paramètre. J'avais mis le JRE, mais pas le compilateur niveau de conformité; ce qu'il est corrigé.
Et comment avez-vous tirer la conclusion, le message d'erreur que c'était le bon endroit pour régler l'option?
Peut-être ceci: stackoverflow.com/questions/7073485/... peut aider si vous êtes en utilisant ant et eclipse.
OriginalL'auteur Cacovsky
Ne vous inquiétez pas, je l'ai résolu.
C'est simple - vous devez installer à la FOIS JRE /JDK avec la même version.
JRE 6 -> JDK 6
JRE 7 -> JDK 7
Et ainsi de suite.
OriginalL'auteur ERJAN
Cette erreur signifie que vous essayez de charger un Java "classe" fichier qui a été compilé avec une version plus récente de Java que vous avez installés.
Par exemple, votre
.class
fichier pourrait avoir été compilé pour JDK 7, et vous essayez de le faire fonctionner avec le JDK 6.La solution est donc soit:
Recompiler la classe, si vous avez la source, à l'aide de votre local compilateur Java (si vous en avez un).
javac FileName.java
Pour les développeurs, cela peut se produire si un autre développeur vérifie dans un .fichier de classe, et ils ont une version plus récente de java que vous avez!
OriginalL'auteur Brad Parks
Vous essayez d'exécuter votre programme avec une version de 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 plus récente et d'essayer de l'exécuter à l'aide d'une version plus ancienne.
Que vous obtenez
et la version 51.0 correspond à J2SE 7 vous avez probablement compilé votre code en Java 7 et d'essayer de l'exécuter à l'aide d'une version plus ancienne. Vérifiez que
java -version
affiche. Il doit être de la version de Java 7. Si pas de faire les changements nécessaires dans le CHEMIN d'accès/JAVA_HOME. Ou vous pouvez compiler avec la même version que vous tentez d'exécuter le code. Si les configurations sont déroutants, vous pouvez toujours donner le chemin absolu/home/user/jdk1.7.0_11/bin/javac
et/home/user/jdk1.7.0_11/bin/java
.OriginalL'auteur Aniket Thakur
J'ai eu une situation similaire sur Mac, et le processus suivant a fonctionné pour moi:
Dans le terminal, tapez
Puis ajoutez cette ligne dans le fichier et l'enregistrer
où version est le seul sur votre ordinateur, tels que
1.7.0_25
.Quitter l'éditeur, puis tapez la commande suivante de la faire devenir efficace
Puis tapez java -version pour vérifier le résultat
Qu'est-ce que
.profile
fichier?Source: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515
OriginalL'auteur Tony
Dans l'Éclipse du menu Fenêtre -> Préférences -> Java -> Compilateur vérifier aussi "Configurer les Paramètres Spécifiques d'un Projet".
Si vous stil ont l'erreur avec la même version de Java: essayez de supprimer le dossier de création de votre projet manuellement. Puis redémarrer Eclipse.
OriginalL'auteur Andreas L.
Vous pouvez avoir du POT bibliothèque compilée dans Java 7, et vous avez seulement Java 6 Java Runtime. Il pourrait se produire avec certains de nouvelles bibliothèques.
OriginalL'auteur Rio
Le problème le plus commun est une mauvaise configuration de votre
JAVA_HOME
variable qui doit pointer vers la droite Kit de Développement Java bibliothèque, si vous avez plusieurs installé.Pour trouver où Java SDK se trouve le dossier, exécutez les commandes suivantes:
Debian/Ubuntu
Pour vérifier quelle version de java (openjdk) que vous avez installé, vérifiez via:
ou:
Changer:
Préfixe
sudo
si nécessaire.pour sélectionner l'autre version de java.
Ou vérifier qui sont disponibles pour l'installation:
Préfixe
sudo
si nécessaire.Ensuite, vous pouvez installer, par exemple:
Préfixe
sudo
si nécessaire.Fedora, Oracle Linux, Red Hat
Installer/mettre à niveau package approprié via:
BSD
Il y a un OpenJDK 7 dans la collection des Ports FreeBSD appelé openjdk7 qui a probablement besoin d'être reconfigurés.
Voir: OpenJDK page wiki.
Windows
Juste d'installer un Java SE Development Kit bibliothèque de la Oracle site ou installer
Jenkins
Si vous êtes confronté à ce problème avec Jenkins, voir:
Cependant la sélection de la bonne version de Java (plus récente) avec
update-alternatives
devrait fonctionner.OriginalL'auteur kenorb
Que j'ai rencontré le même problème lorsque je travaillais avec un Ant script pour construire ma demande.
- Je utiliser Eclipse pour mon développement de l'application, et j'ai changé la version de compilateur dans les propriétés du projet. Mais cela ne fonctionne pas pour moi. Puis j'ai découvert que je peux fournir le compilateur de la version dans le script Ant.
J'ai modifié le script Ant à la section où il est de compiler les fichiers Java.
Cela a fonctionné pour moi à résoudre la non prise en charge majeure problème mineur.
OriginalL'auteur Mandar Pandit
Quand j'ai installé JDK 1.7, le problème a résoudre.
OriginalL'auteur user3168034
J'ai eu le même problème avec un projet écrit en 1.7 et a essayé de l'exécuter en 1.6.
Ma solution dans Eclipse:
Clic droit sur votre Projet Propriétés -> Java Build Path -> Bibliothèques
Sélectionnez votre JRE System Library et cliquez sur Modifier sur la droite, et choisir la cible de JRE.
Maintenant, allez à Compilateur Java sur la gauche, et de changer le Compilateur niveau de conformité à votre cible.
Qui a fonctionné pour moi.
OriginalL'auteur Ben
Comme réponse ailleurs par plusieurs personnes, le programme Java est en cours d'exécution sur une ancienne version de Java que celui qu'il a été compilé. Il doit être "crosscompiled" pour des raisons de compatibilité descendante. Pour le dire autrement, il existe une incompatibilité entre la source et la cible versions de Java.
La modification des options dans Eclipse menus ne répondez pas à l'affiche originale, qui a dit qu'il/elle n'est pas à l'aide d'Eclipse. Sur OpenJDK javac la version 1.7, vous pouvez crosscompile pour 1.6 si vous utilisez des paramètres
-source
et-target
, en plus de fournir le rt.jar -fichier de la version cible (qui est, le plus âgé) au moment de la compilation. Si vous avez fait installer le JRE 1.6, vous pouvez pointer à 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 est sur un système Windows). Comme:Il ressemble, vous pouvez seulement de téléchargement rt.jar à partir de l'Internet, et point. Ce n'est pas trop élégant:
OriginalL'auteur Mace Ojala
Sur cette base...
Dans Eclipse, cliquez-droit sur le projet dans l'explorateur de packages:
Build Path -> Configure Build Path
Sous:
Java Build Path -> Bibliothèques -> Ajouter de la Bibliothèque -> JRE System Library -> Installé Jre -> de Recherche.
Ajouter la JRE par sélection de la bibliothèque dans la liste disponible une fois la recherche terminée.
OriginalL'auteur Adit Ya
Si vous utilisez Maven, jeu Java compiler niveau. Ouvrez une ligne de commande et écrire
java -version
pour compiler votre niveau:Si vous utilisez IntelliJ IDEA, sélectionnez projet → Fichier → Paramètres → Construire l'Exécution de Déploiement → Compilateur → Compilateur Java. Puis changement de byte code 1,7 aime cette image:
OriginalL'auteur ethemsulan
Si vous êtes confronté à ce problème lors de l'utilisation Maven, vous pouvez compiler votre code en utilisant le plug-in Maven Compilateur.
Mise à JOUR: set
source
ettarget
à1.8
, si vous utilisez le JDK 8.OriginalL'auteur Thamme Gowda
J'ai eu le même message d'erreur lors de l'exécution de la Fourmi à partir d'Eclipse, mais les autres solutions mentionnées ici ne résout pas mon problème. Le plus drôle est que Ant en cours d'exécution à partir de la ligne de commande de Windows est en cours d'exécution fine, donc ça doit être un problème de configuration au sein d'Eclipse.
Il s'est avéré que sous Eclipse, vous pouvez spécifier l'environnement qui Ant doit être en cours d'exécution avec et cela a été défini comme un JRE au lieu d'un JDK.
OriginalL'auteur ckielstra
Cette erreur signifie que le JRE qui est 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é le fichier de la classe (c'est à dire compilé) est plus récente.
Pour résoudre ce problème, vous pouvez soit
a) de Compiler vos sources Java avec la même ou plus de la version du compilateur Java que celui qui sera utilisé pour l'exécuter. c'est à dire installer le JDK.
b) de Compiler 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écuter vos classes compilées dans un JRE est la même, ou une version plus récente version du JDK utilisé pour compiler les classes.
Vous pouvez vérifier les versions que vous utilisez actuellement
javac -version
pour le compilateur, etjava -version
pour le moment de l'exécution.Pour la compilation, certainement, d'installer et de configurer les spécificités de JDK que vous voulez.
Pour l'exécution, vous pouvez utiliser celui qui est livré avec le JDK ou autonome JRE, mais indépendamment de cela, assurez-vous que vous avez installé le droit à des versions et que vous avez configuré votre CHEMIN de telle sorte qu'il n'y a pas de surprises.
La variable d'environnement PATH indique au shell de commande où regarder pour la commande que vous tapez. Lorsque vous tapez
java
, la commande shell interprète va chercher dans tous les endroits indiqués dans l'PATH
variable, de gauche à droite, pour trouver lejava
runtime exécutable à lancer. Si vous avez plusieurs versions de Java installées à - dire que vous avez lejava
exécutable dans de multiples endroits spécifiés dans la variable PATH, la première rencontrée en allant de gauche à droite est celle qui est exécutée.La commande du compilateur est
javac
et vient seulement avec le JDK. L'exécution de la commande estjava
et est livré avec le JDK et le JRE.Il est probable que vous avez une version (51.0 = Java 7) de
javac
installé, et vous avez également la même version dejava
installé, mais une autre version précédente dejava
apparaît plus tôt dans le CHEMIN d'accès et donc, est appelée à la place de celui que vous attendez.OriginalL'auteur Vihung
Vous avez utilisé une version supérieure de la JDK pour compiler et d'essayer de l'exécuter à partir d'une version inférieure de JDK/JRE.
Pour le vérifier, 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 l'aide de java à partir de la version du JDK ou si vous avez un nouveau JRE/JDK qui fonctionnera aussi bien.
which javac
vous diront l'emplacement, par exemple,/usr/bin/javac
. Il suffit d'exécuter directement à l'aide de/usr/bin/java <program>
.OU vous pouvez définir la variable d'environnement comme une solution permanente.
OriginalL'auteur L Lawliet
Eu ce problème quand je revenue à la version 6 de Java et a essayé de courir les classes précédemment compilé avec Java 7. Ce qui a fonctionné pour moi a été Préférences > java > compilateur --> set niveau de conformité à 1,6, et surtout "configurer les paramètres de projet"..
OriginalL'auteur user3534268
Aujourd'hui, ce message d'erreur est apparu dans notre Tomcat 7 sur Ubuntu 12.04.2 LTS (Precise Pangolin):
La Struts application est compilée avec Java 7.
Il s'est avéré que quelqu'un utilise "service tomcat [marche/arrêt]" pour redémarrer Tomcat 7,
Qui provoque le "non pris en charge majeure.version mineure 51.0" erreur.
Lorsque nous avons utilisé "/etc/init.d/tomcat7 [marche/arrêt]" pour redémarrer Tomcat 7, le problème a été résolu.
OriginalL'auteur oraclesoon
Je l'ai résolu. J'ai couru:
L'erreur est trompeuse,
Unsupported major.minor version 51.0
. Cela donne l'impression que la version 51 (Java 7) n'est pas pris en charge. Et nous devrions utiliser la version 6 de Java.L'erreur doit avoir été:
OriginalL'auteur Siddharth
Votre fichier Java est compilé avec une version différente (plus la version de compilateur) que la version (en bas runtime version) que vous essayez de le faire fonctionner avec.
Il est fondamental de comprendre que les classes compilées avec les versions inférieures sont censés fonctionner dans les dernières versions supérieures. Mais le contraire (compilé avec une plus grande version de compilateur et d'essayer de l'exécuter avec la plus faible version runtime) est tout à fait impossible parfois.
D'où vous êtes montré cette erreur, lorsque vous essayez d'exécuter votre programme. Non pris en charge majeure.version mineure x.x
(Source: oracle.com.)
OriginalL'auteur Manohar
Oh Mac OS X, j'ai été en mesure de résoudre ce problème en définissant la variable JAVA_HOME:
OriginalL'auteur TomTom
D'abord nous allons obtenir quelques principes de base...
JRE est une composante NetBeans/Eclipse/autonome qui va vous fournir les bibliothèques, JVM, Java plugins & Java web start. Notez qu'il ne fournit pas de cas de déviation ou de débogueurs.
JDK est le sur-ensemble de JRE le long avec des cas de déviation et les débogueurs.
Alors, quand vous avez votre bibliothèque par défaut comme un JRE au lieu de JDK, vous allez passer un agréable moment de l'importation des trucs, mais il ne compile pas.
Au lieu de cela, définissez votre chemin pour JDK (j'utilise NetBeans, et je les définir à l'aide de netbeans.conf dans netbeans/etc/netbeans.conf et modifier le chemin d'accès).
OriginalL'auteur Creative_Cimmons
J'ai eu le problème de laquelle j'ai été en train d'exécuter une compilation Maven sur mon projet à partir de la ligne de commande pour exécuter mes tests d'unité; si j'ai fait une modification de la classe de test et de laisser Eclipse automatiquement le recompiler, puis j'ai eu la "non prise en charge majeure.version mineure 51.0" erreur.
J'ai deux JDK6 et JDK7 installé, mais tous mes JRE paramètres ont été pointant vers 1.6, à la fois dans le pom et à partir de la page de propriétés du projet dans Eclipse. Aucun montant de Maven Projet de mise à Jour et/ou de l'actualisation d'réglé ce problème.
Enfin j'ai essayé de fermer le projet et de le ré-ouvrir, et cela semblait le fixer! HTH
OriginalL'auteur Matthew Wise
Vous avez compilé votre classe Java avec le JDK 7 et que vous essayez d'exécuter une même classe sur JDK 6 .
OriginalL'auteur Sagar Varpe
OriginalL'auteur siddmuk2005
La réponse est pour le problème:
Exception in thread "main" java.lang.UnsupportedClassVersionError: edu/stevens/cs549/dht/main/LocalContext : non pris en charge majeure.version mineure 52.0
J'ai eu le même problème. Pour ceux qui ont eu ce problème dans AWS ec2, et ont en quelque sorte été redirigé ici à cette question. Je réponds pour ceux, et voudrais partager avec vous cette comment je l'ai fait.
J'ai eu de la difficulté, car les instances Amazon EC2 étaient en cours d'exécution java version 1.7 et peut-être que mon projet n'était pas compatible avec elle parce que j'ai été en utilisant Maven et il préconfiguré pour java 1.8.
J'ai donc installé la nouvelle version de java:
sudo yum -y install java-1.8.0
Et puis l'important est de supprimer la version antérieure:
N'oubliez pas de le supprimer après l'installation de la nouvelle version, sinon il serait en permanence à l'aide de la même ancienne version et j'espère que cela résout votre problème, ce qui dans mon cas.
OriginalL'auteur Siddharth Choudhary