web-dev-qa-db-fra.com

java.lang.UnsupportedClassVersionError major.minor version 51.0 non prise en charge

Duplicate possible:
version majeure majeure non supportée 51.

J'essaie de construire une application, mais cela donne une erreur. Ma version de JDK est donnée ci-dessous:

Java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode, sharing)

Voici mon journal des erreurs:

Buildfile: build.xml

compile:
     [echo] Compiling the service....
     [echo]   ...mkdir for classes first....
     [echo]   ...Java classes next....
     [echo]   ...mkdir for generated code next....
     [echo]  ...generate stubs/skeletons next....
[wscompile] command line: wscompile -d /home/vivekray/program/MTrans/WEB-INF/classes -features:wsi,documentliteral -gen:server -keep -model /home/vivekray/program/MTrans/WEB-INF/model.gz -verbose -Xprintstacktrace /home/vivekray/program/MTrans/src/config.xml -classpath /home/vivekray/program/MTrans/WEB-INF:/home/vivekray/program/MTrans/WEB-INF/classes:/home/vivekray/program/MTrans/lib/log4j-1.2.16.jar:/home/vivekray/jwsdp-2.0/jwsdp-shared/lib/mail.jar:/home/vivekray/jwsdp-2.0/jwsdp-shared/lib/activation.jar:/home/vivekray/jwsdp-2.0/jaxp/lib/jaxp-api.jar:/home/vivekray/jwsdp-2.0/jaxp/lib/endorsed/dom.jar:/home/vivekray/jwsdp-2.0/jaxp/lib/endorsed/sax.jar:/home/vivekray/jwsdp-2.0/jaxp/lib/endorsed/xalan.jar:/home/vivekray/jwsdp-2.0/jaxp/lib/endorsed/xercesImpl.jar:/home/vivekray/jwsdp-2.0/jaxrpc/lib/jaxrpc-api.jar:/home/vivekray/jwsdp-2.0/jaxrpc/lib/jaxrpc-spi.jar:/home/vivekray/jwsdp-2.0/jaxrpc/lib/jaxrpc-impl.jar:/home/vivekray/jwsdp-2.0/saaj/lib/saaj-api.jar:/home/vivekray/jwsdp-2.0/saaj/lib/saaj-impl.jar:/home/vivekray/jwsdp-2.0/jwsdp-shared/lib/relaxngDatatype.jar:/home/vivekray/jwsdp-2.0/jwsdp-shared/lib/xsdlib.jar:/home/vivekray/jwsdp-2.0/jwsdp-shared/lib/jax-qname.jar:/home/vivekray/jwsdp-2.0/Apache-ant/lib/ant.jar:/home/vivekray/jwsdp-2.0/fastinfoset/lib/FastInfoset.jar:/home/vivekray/Softwares/Apache-Tomcat-7.0.27/lib/servlet-api.jar
[wscompile] [creating model: mtransservice]
[wscompile] [creating service: Mtransservice]

BUILD FAILED
Java.lang.UnsupportedClassVersionError: in/cdac/mobile/computing/mtrans/MtransService : Unsupported major.minor version 51.0
    at Java.lang.ClassLoader.defineClass1(Native Method)
    at Java.lang.ClassLoader.defineClassCond(ClassLoader.Java:631)
    at Java.lang.ClassLoader.defineClass(ClassLoader.Java:615)
    at org.Apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.Java:1146)
    at org.Apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.Java:1324)
    at org.Apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.Java:1388)
    at org.Apache.tools.ant.AntClassLoader.findClass(AntClassLoader.Java:1341)
    at org.Apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.Java:1088)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:295)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
    at Java.lang.Class.forName0(Native Method)
    at Java.lang.Class.forName(Class.Java:247)
    at com.Sun.xml.rpc.processor.modeler.rmi.RmiUtils.getLoadableClassName(RmiUtils.Java:78)
    at com.Sun.xml.rpc.processor.modeler.rmi.RmiUtils.getRealName(RmiUtils.Java:54)
    at com.Sun.xml.rpc.processor.modeler.rmi.RmiModeler.modelPort(RmiModeler.Java:676)
    at com.Sun.xml.rpc.processor.modeler.rmi.RmiModeler.buildLiteralModel(RmiModeler.Java:603)
    at com.Sun.xml.rpc.processor.modeler.rmi.RmiModeler.buildModel(RmiModeler.Java:457)
    at com.Sun.xml.rpc.processor.config.ModelInfo.buildModel(ModelInfo.Java:88)
    at com.Sun.xml.rpc.processor.Processor.runModeler(Processor.Java:63)
    at com.Sun.xml.rpc.tools.wscompile.CompileTool.run(CompileTool.Java:714)
    at com.Sun.xml.rpc.util.ToolBase.run(ToolBase.Java:43)
    at com.Sun.xml.rpc.tools.ant.Wscompile.execute(Wscompile.Java:746)
    at org.Apache.tools.ant.UnknownElement.execute(UnknownElement.Java:288)
    at Sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
    at Java.lang.reflect.Method.invoke(Method.Java:597)
    at org.Apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.Java:106)
    at org.Apache.tools.ant.Task.perform(Task.Java:348)
    at org.Apache.tools.ant.Target.execute(Target.Java:357)
    at org.Apache.tools.ant.Target.performTasks(Target.Java:385)
    at org.Apache.tools.ant.Project.executeSortedTargets(Project.Java:1337)
    at org.Apache.tools.ant.Project.executeTarget(Project.Java:1306)
    at org.Apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.Java:41)
    at org.Apache.tools.ant.Project.executeTargets(Project.Java:1189)
    at org.Apache.tools.ant.Main.runBuild(Main.Java:758)
    at org.Apache.tools.ant.Main.startAnt(Main.Java:217)
    at org.Apache.tools.ant.launch.Launcher.run(Launcher.Java:257)
    at org.Apache.tools.ant.launch.Launcher.main(Launcher.Java:104)

Total time: 1 second
140
vivek rai

Java.lang.UnsupportedClassVersionError est dû à un JDK plus élevé lors de la compilation et à une réduction du JDK au moment de l'exécution.

Voici la liste des versions:

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
238
Vivek Kumar Ray

Ces gars-là vous ont donné la raison pour laquelle vous échouez mais pas comment le résoudre. Ce problème peut apparaître même si vous avez un JDK qui correspond à la JVM dans laquelle vous l'essayez.

Projet -> Propriétés -> Java Compilateur

Activer les paramètres spécifiques au projet.

Ensuite, sélectionnez Niveau de conformité du compilateur à 1.6 ou 1.5, créez et testez votre application.

Maintenant, ça devrait aller.

253
Capagris

La version 51 est Java 7, vous utilisez probablement le mauvais JDK. Vérifiez Java_HOME.

Comme mentionné ici, sous Compatibilité binaire

18
Scorpio

J'ai rencontré le même problème, lorsque jdk 1.7 était utilisé pour compiler, jre 1.4 était utilisé pour l'exécution.

Ma solution a été de définir la variable d'environnement PATH en ajoutant le chemin C:\glassfish3\jdk7\bin devant le paramètre PATH existant. La valeur mise à jour est "C:\glassfish3\jdk7\bin; C:\Sun\SDK\bin". Après la mise à jour, le problème avait disparu.

4
user1623624

Cela signifie que vous avez compilé vos classes sous un JDK spécifique, mais essayez ensuite de les exécuter sous ancienne version de JDK.

4
Jainendra

Assurez-vous que vous utilisez le bon SDK lors de la compilation/exécution et veillez à utiliser source/target 1.7.

2
carlspring

Utilisez Maven et utilisez le maven-compiler-plugin pour appeler explicitement la commande JDK javac.exe correspondant à la version correcte, car Maven pourrait exécuter n’importe quelle version. cela attrape également le bogue de longue date vraiment stupide dans javac qui ne repère pas les fichiers jar de version de classe et les classes/méthodes/propriétés manquantes lors de la compilation pour les versions antérieures Java ! Cette dernière partie aurait pu être facilement corrigée dans Java1.5 + en ajoutant des attributs de contrôle de version à de nouvelles classes, méthodes et propriétés, ou des données de contrôle de version distinctes du compilateur. Il s'agit donc d'un oubli assez stupide de la part de Sun et Oracle.

2
Infernoz