2012-06-28 2 views
132

Можно создать дубликат:
unsupported major .minor version 51.0java.lang.UnsupportedClassVersionError Неподдерживаемое MAJOR.MINOR версия 51,0

Я пытаюсь создать приложение, но это дает некоторую ошибку. Моя JDK версия приводится ниже:

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) 

Вот мой журнал ошибок:

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 

ответ

232

java.lang.UnsupportedClassVersionError происходит из-за более высокой версии JDK во время компиляции и нижней JDK во время выполнения.

Вот список версий:

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 
+0

Надеюсь, что это поможет http: //khyatisehgal.wordpress.com/2014/08/24/java-lang-unsupportedclassversionerror-unsupported-major-minor-version-51-0-at/ –

+0

В Eclipse вы можете ненадлежащим образом переопределить локальные свойства пакета (правая кнопка мыши -> свойства-> компилятор Java) с определенным уровнем соответствия. Когда вы меняете локальные настройки (окно -> настройки), эти пакеты не будут автоматически «понижены». Иногда это может произойти, когда вы перебираете свои пакеты для работы в производственной среде с более низким уровнем соответствия. – keesp

4

Это означает, что вы собрали классы под конкретной версии JDK, но затем попытаться запустить их под старой версии из JDK.

+1

Но я использую только jdk-6.30, и еще одна вещь в том же приложении отлично работает на jdk-6.30 в другой системе. –

2

Убедитесь, что вы используете правильный SDK при компиляции/запуска, а также убедитесь, что вы используете источник/цель 1.7.

253

Эти ребята дали вам причину, по которой не удается, но не решить ее. Эта проблема может возникнуть, даже если у вас есть jdk, который соответствует JVM, в который вы его пытаетесь.

Проект -> Свойства -> Java Compiler

Включить конкретные параметры проекта.

Затем выберите уровень совместимости компилятора до 1.6 или 1.5, выполните сборку и протестируйте приложение.

Теперь все должно быть хорошо.

+0

Это сработало для меня. Благодаря! – gtiwari333

+10

Вы настоящий гениальный человек. Все остальные ответы просто означают проблему с объяснением. Не описывает, как решить эту проблему. –

+0

Честно говоря, человек ... Я указал ваш ответ на аналогичный вопрос о SO, где ответ не приблизился к решению проблемы, как ваш ответ. – jule64

4

Я столкнулся с той же проблемой, когда jdk 1.7 был использован для компиляции, тогда для выполнения был использован jre 1.4.

Моим решением было установить переменную окружения PATH, добавив путь к файлу C: \ glassfish3 \ jdk7 \ bin перед существующей установкой PATH. Обновленное значение: «C: \ glassfish3 \ jdk7 \ bin; C: \ Sun \ SDK \ bin». После обновления проблема исчезла.

1

Используйте Maven и используйте maven-compiler-plugin, чтобы явным образом вызывать нужную версию JDK javac.exe, потому что Maven может запускать любую версию; это также ловит поистине глупую давнюю ошибку в javac, которая не обнаруживает разбегающиеся версии класса java и отсутствующие классы/методы/свойства при компиляции для более ранних версий Java! Эта более поздняя часть может быть легко исправлена ​​в Java 1.5+ путем добавления атрибутов управления версиями к новым классам, методам и свойствам или отдельным данным управления версиями компилятора, так что это довольно глупый контроль со стороны Sun и Oracle.

+6

-1. OP не использует Maven и меняет весь набор инструментов для этой проблемы, кажется, излишне. Такой великий, как Maven, может быть, imho этот ответ оффтопик. –

Смежные вопросы