web-dev-qa-db-ja.com

java.lang.UnsupportedClassVersionErrorサポートされていないmajor.minorバージョン51.0

可能な重複:
サポートされていないメジャーマイナーバージョン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
140
vivek rai

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

これらの人たちはあなたに失敗している理由をあなたに与えました、しかし、それをどのように解決するかではありません。この問題は、試しているJVMに一致するjdkがある場合でも発生する可能性があります。

「プロジェクト」 - >「プロパティ」 - >「Javaコンパイラ」

プロジェクト固有の設定を有効にします。

次に、Compiler Compliance Levelを1.6または1.5に選択し、アプリをビルドしてテストします。

今、それは大丈夫なはずです。

253
Capagris

バージョン51はJava 7です、あなたはおそらく間違ったJDKを使います。 Java_HOMEを確認してください。

ここで述べたように、バイナリ互換の下で

18
Scorpio

私は同じ問題に遭遇しました、jdk 1.7がコンパイルのために使われて、そしてjre 1.4が実行のために使われたとき。

私の解決策は、パス名C:\ glassfish3\jdk7\binを既存のPATH設定の前に追加して環境変数PATHを設定することでした。更新された値は "C:\ glassfish3\jdk7\bin; C:\ Sun\SDK\bin"です。更新後、問題は解決しました。

4
user1623624

つまり、クラスを特定のJDKの下でコンパイルした後で、古いバージョンのJDKの下でそれらを実行しようとしたということです。

4
Jainendra

コンパイル/実行時に正しいSDKを使用していることを確認してください。また、ソース/ターゲット1.7を使用していることを確認してください。

2
carlspring

Mavenは任意のバージョンを実行している可能性があるため、Mavenを使用して、実際の正しいバージョンのJDK javac.exeコマンドを明示的に呼び出すために maven-compiler-plugin を使用します。これはまた、javacの本当に愚かで長年のバグをキャッチし、ランタイムの最新クラスのjarファイルや、欠けているクラス/メソッド/プロパティを発見しません。この後の部分は、バージョン管理属性を新しいクラス、メソッド、およびプロパティに追加するか、コンパイラのバージョン管理データを分けることによって、Java 1.5以降で簡単に修正できたので、SunとOracleによる非常に愚かな見落としです。

2
Infernoz