141

アプリケーションをビルドしようとしていますが、エラーが発生します。私の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
4

7 に答える 7

254

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

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

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

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

さて、それは問題ないはずです。

于 2012-06-29T15:43:47.427 に答える
238

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
于 2012-06-28T06:27:20.927 に答える
18

バージョン 51 は Java 7 です。間違った JDK を使用している可能性があります。JAVA_HOME を確認してください。

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

于 2012-06-28T06:29:31.643 に答える
4

jdk 1.7を使用してコンパイルし、jre 1.4を実行に使用したときに、同じ問題が発生しました。

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

于 2012-11-26T19:39:31.137 に答える
4

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

于 2012-06-28T06:29:12.360 に答える
2

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

于 2012-12-02T15:42:47.550 に答える
2

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

于 2012-06-28T08:12:20.573 に答える