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

1573

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 .../binré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.

  1. Comment je le répare?
  2. Dois-je installer le JDK et configurer ma variable de chemin d'accès au JDK au lieu de JRE?
  3. Quelle est la différence entre la PATHvariable dans JRE ou JDK?
ERJAN
la source
avez-vous également installé jdk? jre est un environnement Java RunTime, pour créer des applications java, vous avez également besoin de jdk
CyprUS
oui je l'ai fait, et maintenant ma variable de chemin indique où se trouve jdk. mais j'ai toujours cette erreur "version mineure non prise en charge 51.0" pensez-vous que je devrais installer une ancienne version de jdk? im en utilisant jdk 1.7.0
ERJAN
20
Cela m'est arrivé sur Mac OS X lorsque j'avais des problèmes en raison de la situation étrange d'Apple Java 6 et d'Oracle Java 7 sur OSX ces jours-ci. version courte: Compiler avec JDK7, exécuter avec JDK6, obtenez ceci.
Warren P
7
En java, ClassName doit commencer par une lettre majuscule;)
Ashish Panery
5
Pour El Captain, cette réponse l'a corrigé pour moi: stackoverflow.com/a/34201991/1615594
tsuz

Réponses:

1940

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:

Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
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

(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:

javac -target 1.4 HelloWorld.java

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 .

Juha Palomäki
la source
167
"Le numéro de version indiqué décrit la version si Java a été utilisé pour compiler le code." Non. Il montre la version du JRE avec laquelle le fichier de classe est compatible. En utilisant les options de compilation croisée, vous pouvez utiliser un JDK 1.7 pour compiler du code avec une version de classe de 1.1 (à 1.7).
Andrew Thompson
85
Cette réponse n'explique pas comment le corriger comme la question posée?
Jonathan Leung
7
C'est une bonne solution pour compiler directement vers une version précédente d'Eclipse: stackoverflow.com/a/16345710/2091700
Alphaaa
19
IN eclipse project => Proerties => compilateur java; définissez "le niveau de conformité du compilateur" sur la version en fonction de votre jre ou jdk. Quant à moi, c'est 1.6 pour jre 1.6
Sam
5
Cela peut se produire lorsque la source du compilateur est définie en non-conformité avec le JRE / JDK en cours de compilation. Par exemple, j'ai trouvé les valeurs ci-dessous dans le dossier eclipse .settings, org.eclipse.jdt.core.compiler.compliance = 1.7, org.eclipse.jdt.core.compiler.source = 1.7, org.eclipse.jdt.core.compiler .codegen.targetPlatform = 1.7. Et mon compilateur était 1.6.0_32. Le problème a été résolu après avoir modifié les valeurs à 1,6. Le problème est apparu après avoir copié le projet à partir d'un autre espace de travail où j'utilisais JDK 1.7 :(
Gana
367

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.

Vivek Kumar Ray
la source
11
+1: changer ce lien symbolique ( /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ésolu
ezdazuzena
1
Comment puis-je effectuer le changement ci-dessus?
Ankur Raiyani
8
Projet -> Propriétés -> Compilateur Java Activez les paramètres spécifiques au projet. Sélectionnez ensuite le niveau de conformité du compilateur à 1,7, 1,6 ou 1,5, créez et testez votre application.
Vivek Kumar Ray
Lorsque je suis passé à Java 7, Eclipse a continué d'essayer de fonctionner en Java 6 ... je ne sais pas pourquoi. Désinstaller l'ancien JDK a fait l'affaire pour moi.
HDave
9
@ezdazuzena avait l'habitude sudo update-alternatives --config javade le faire.
Thorbjørn Ravn Andersen
115

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.

Cacovsky
la source
3
Dans eclipse, parfois les facettes du projet doivent également être modifiées pour une version java appropriée.
Bilal Mirza
6
Merci. Il convient de noter que la définition de l'environnement d'exécution par défaut d'Eclipse (le JRE qui va sur le chemin de génération) est un paramètre distinct . J'avais défini le JRE mais pas le niveau de conformité du compilateur; cela l'a corrigé.
wchargin
Et comment avez-vous tiré la conclusion du message d'erreur que c'était le bon endroit pour définir l'option?
Alexander
Peut-être que ceci: stackoverflow.com/questions/7073485/… peut vous aider si vous utilisez ant et eclipse.
OuuGiii
La question concerne Notepad ++ mais pas Eclipse.
gotwo
60

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.

ERJAN
la source
29
java 7 peut gérer 6 sans aucun problème aussi.
damienix
@damienix Vous voudrez probablement spécifier que Java 7 JRE peut gérer une classe compilée Java 6 sans problème, sinon votre déclaration conduit à la confusion.
Frontear
43

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 .classfichier aurait pu être compilé pour JDK 7 et vous essayez de l'exécuter avec JDK 6.

La solution consiste donc à:

  • Mettez à niveau votre runtime 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 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!

Brad Parks
la source
22

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 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 -versions'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/javacet /home/user/jdk1.7.0_11/bin/java.

Aniket Thakur
la source
18

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

Dans le terminal, saisissez

vi ~/.profile

Ajoutez ensuite cette ligne dans le fichier et enregistrez

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

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

source ~/.profile 

Tapez ensuite java -version pour vérifier le résultat

java -version 

Qu'est-ce qu'un .profilefichier?

Le fichier .profile est un fichier caché. Il s'agit d'un fichier facultatif qui indique au système les commandes à exécuter lorsque l'utilisateur dont il est le fichier de profil se connecte. 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.

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

Tony
la source
16

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.

Andreas L.
la source
14

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.

Rio
la source
14

Le problème le plus courant est une mauvaise configuration de votre JAVA_HOMEvariable 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:

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éfixez sudosi nécessaire.

pour sélectionner la version java alternative.

Ou vérifiez ceux qui sont disponibles pour l'installation:

apt-cache search ^openjdk

Préfixez sudosi nécessaire.

Ensuite, vous pouvez installer, par exemple:

apt-get install openjdk-7-jre

Préfixez sudosi nécessaire.

Fedora, Oracle Linux, Red Hat

Installez / mettez à niveau le package approprié via:

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

Le java-1.7.0-openjdkpackage contient uniquement l'environnement d'exécution Java. Si vous souhaitez développer des programmes Java, installez le java-1.7.0-openjdk-develpackage.

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-alternativesdevrait fonctionner.

kenorb
la source
Cette réponse a fonctionné pour moi lorsque j'essayais d'utiliser spark2-shell sur un hôte après avoir ajouté le service spark à un cluster avec cloudera.
Modifier
12

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.

<target name="build-java" depends="prepare-build">
    <echo message="Compiling java files"/>
    <javac ....
           target="1.5"...
    </javac>
</target>

Cela a fonctionné pour moi pour résoudre le problème mineur majeur non pris en charge.

Mandar Pandit
la source
12

Lorsque j'ai installé JDK 1.7, le problème a été résolu.

user3168034
la source
12

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.

Ben
la source
11

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 -sourceet -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:

javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java

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:

javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java
Mace Ojala
la source
10

Basé sur ceci...

J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45

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.

Adit Ya
la source
10
  • Si vous utilisez Maven, définissez votre niveau de compilation Java. Ouvrez une ligne de commande et écrivez java -versionpour votre niveau de compilation:

    Entrez la description de l'image ici

  • Si vous utilisez IntelliJ IDEA, sélectionnez projet → FichierParamètresBuild Execution DeploymentCompilateurCompilateur Java . Ensuite, changez le code d'octet en 1.7 comme cette image:

    Entrez la description de l'image ici

éthemsulan
la source
J'avais également besoin de faire une installation propre de maven après avoir changé le pom.
Joe Borysko
10

Si vous rencontrez ce problème lors de l'utilisation de Maven , vous pouvez compiler votre code à l'aide du plug-in Maven Compiler .

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
       .....

MISE À JOUR: réglez sourceet targetsur 1.8, si vous utilisez JDK 8.

Thamme Gowda
la source
un extrait sur la façon d'utiliser le plugin pour effectuer une compilation croisée serait très bien au lieu de visiter / ouvrir le lien
coding_idiot
8

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.

  • Allez dans: Exécuter -> Outils externes -> Configurations des outils externes ...
  • Sélectionnez Ant build.xml pour votre projet (si vous avez plusieurs projets)
  • Activez l'onglet 'JRE'
  • Ici a été sélectionné «JRE séparé: jre6». Lorsque j'ai changé cela en JDK de la série 1.6 ou 1.7, l'erreur a disparu.
ckielstra
la source
8

Comment je le répare?

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 -targetparamè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 -versionpour le compilateur et java -versionpour l'exécution.

Dois-je installer le JDK et configurer ma variable PATH sur le JDK au lieu de JRE?

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.

Quelle est la différence entre la variable PATH dans JRE ou JDK?

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 la PATHvariable, de gauche à droite, pour trouver l' javaexé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 javacfournie uniquement avec le JDK. La commande runtime est javafournie avec le JDK et se trouve dans le JRE.

Il est probable que vous ayez une version (51.0 = Java 7) javacinstallée, et que vous ayez également la même version javainstallée, mais qu'une autre version précédente de javaapparaît plus tôt dans le PATH et est donc invoquée au lieu de celle que vous attendez .

Vihung
la source
7

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:

javac -version

java -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 javacvous 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.

L Lawliet
la source
6

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" ..

user3534268
la source
6

Aujourd'hui, ce message d'erreur est apparu dans notre Tomcat 7 sur Ubuntu 12.04.2 LTS (Precise Pangolin):

/var/log/tomcat7/localhost.2014-04-08.log:
8 avr.2014 09:00:55 org.apache.catalina.core.StandardContext filterStart
SEVERE: exception lors du démarrage du filtre struts2
java.lang.UnsupportedClassVersionError: contrôleur / ReqAccept: version 51.0 major.minor non prise en charge (impossible de charger le contrôleur de classe. ReqAccept)

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,

$ ps -ef | grep java
tomcat7 31783 1 32 20:13? 00:00:03 / usr / lib / jvm / default-java / bin / java ...
$ / usr / lib / jvm / default-java / bin / java -version
version Java "1.6.0_27"

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.

$ ps -ef | grep java
tomcat7 31886 1 80 20:24? 00:00:10 /usr/local/java/jdk1.7.0_15/bin/java
$ /usr/local/java/jdk1.7.0_15/bin/java -version
version Java "1.7.0_15"

oraclesoon
la source
6

Je l'ai résolu. L'Iran:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

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 version Java actuelle, 50, n'est pas prise en charge. Utilisez plutôt la version 7 de Java (51: 0 et supérieure). »

Siddharth
la source
6

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

Q: J'ai créé une application dans Java 7, mais lorsque mes utilisateurs essaient de l'exécuter, ils obtiennent une erreur major.minor version 51.0 non prise en charge. Qu'est-ce que cela signifie et que puis-je faire?

R: Si vous compilez une application à l'aide de javac dans Java 7, les fichiers de classe résultants auront le numéro de version 51.0. Les versions de Java antérieures à 7 ne reconnaissent pas ce nombre, vos utilisateurs devront donc mettre à niveau vers Java 7 avant d'exécuter votre application. Si vous n'utilisez aucune API Java 7, vous pouvez essayer de compiler votre application à l'aide de javac -target 1.6 pour créer un fichier de classe compatible 1.6. Si votre application est déployée à l'aide de Webstart, vous pouvez spécifier la version minimale requise. Pour plus d'informations, consultez les documents sur Java Web Start et JNLP ici. Ce problème disparaîtra lorsque nous déclencherons la mise à jour automatique de Java 7 pour les utilisateurs finaux disposant actuellement de Java 6 sur leur bureau. Le calendrier pour cela n'est pas encore déterminé, nous voulons donner aux développeurs le temps de résoudre tout problème entre leur code et JDK 7 en premier.

(Source: oracle.com .)

Manohar
la source
5

Oh Mac OS XI a pu résoudre ce problème en définissant la variable JAVA_HOME:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
TomTom
la source
4

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).

Creative_Cimmons
la source
3

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

Matthew Wise
la source
3

Vous avez compilé votre classe Java avec JDK 7 et vous essayez d'exécuter la même classe sur JDK 6.

Sagar Varpe
la source
3
  • Installez JDK 7.0.55 et définissez Java pour Eclipse pour JDK 7.0.55.
  • Générez le projet avec JDK 7.0.55 en configurant sur le chemin de génération JDK 7.0.55.
  • Définissez le compilateur dans Eclipse pour JDK 7.0.55 par le menu Windows -> Préférences -> Java -> Compilateur - choisissez 1.7.
siddmuk2005
la source
3

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:

sudo yum remove java-1.7.0-openjdk

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.

Siddharth Choudhary
la source