web-dev-qa-db-fra.com

Exception dans le thread "principal" Java.lang.UnsupportedClassVersionError, Unsupported major.minor version 52.0

J'essaie d'exécuter l'exemple WordCount sur hadoop - 1.0.4 et j'obtiens l'erreur suivante:

Exception in thread "main" Java.lang.UnsupportedClassVersionError: WordCount :
Unsupported major.minor version 52.0
    at Java.lang.ClassLoader.defineClass1(Native Method)
    at Java.lang.ClassLoader.defineClass(ClassLoader.Java:791)
    at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:142)
    at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:449)
    at Java.net.URLClassLoader.access$100(URLClassLoader.Java:71)
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:361)
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:355)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:354)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:423)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:356)
    at Java.lang.Class.forName0(Native Method)
    at Java.lang.Class.forName(Class.Java:264)
    at org.Apache.hadoop.util.RunJar.main(RunJar.Java:149)

J'utilise la version Java version:

Java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)

Java_HOME indique également le répertoire d'installation de Java7.

Merci de votre aide.

23
georgiana_e

On dirait que vous utilisez JDK8 pour la compilation et la version inférieure sur l'endroit où vous l'utilisez.

Donc

En supposant utiliser Eclipse, Window > Preferences > Compiler > compiler level

puis définissez le niveau inférieur (<actuel).

19
Suresh Atta

J'ai eu le même problème que j'ai résolu. J'ai trouvé que le Java_HOME dans mon hadoop-env.sh est /usr/lib/jvm/Java-6-openjdk mais le Java_HOME dans /etc/profile est /usr/local/Java/jdk1.8.0_25.

Après avoir changé Java_HOME dans /etc/profile à /usr/lib/jvm/Java-6-openjdk qui est identique à hadoop-env.sh et utilise $source /etc/profile # to make /etc/profile effects

Mon problème est résolu! J'espère que cela t'aidera.

4
Albert

On dirait que quelqu'un a réussi à compiler une classe avec un compilateur Java 8. Recompilez le bocal incriminé avec un niveau de conformité de Java 7 ou inférieur).

0
chrylis

Et bien évidemment ça ne marchera pas! Vous compilez sur un JDK plus récent et déployez sur un JDK/JRE plus ancien. Vous devez compiler sur l'ancien JDK.

0
saurav

Le problème est dû au fait que les fichiers .jsp sont compilés avec un compilateur supérieur (8) que prévu (7). Remplacez tous les niveaux de compilation par un niveau inférieur (c'est-à-dire 7) et modifiez également le chemin jdk indiqué dans le fichier de paramètres de configuration Eclipse dans le même dossier où se trouve .exe.

0
prash.gaikwad4

J'ai également rencontré le même problème. Devrais utiliser la même Java pour la compilation et identique ou supérieure à l'endroit où vous l'exécutez, bien que vice-versa provoque cette erreur. Si vous avez vérifié:

  1. Window > Preferences > Compiler > compiler level
  2. Java -version et les deux ont la même version alors vous êtes prêt à partir. Lors de la création d'un nouveau projet dans Eclipse: File -> New -> Java Project sous [~ # ~] jre [~ # ~] check Utilisez un environnement d'exécution enter image description here et défini sur la même version qui se trouve sur votre système et sur le système où vous devez exécuter ce projet.
0
Nikhil Chauhan

Je pense que vous avez déjà obtenu votre réponse ... il suffit d'ajouter, dans Eclipse sous le projet, il y a un dossier JRE System Library [JavaSE-1.x] .. faites un clic droit dessus, vous verrez l'écran JRE System Library..there vous pouvez définir l'environnement d'exécution.

0
ppant