最近Java 8をアンインストールし、Java 6を使用するためにJava 6を使用しました。 mvn - version
を返します:
Exception in thread "main" Java.lang.UnsupportedClassVersionError: org/Apache/maven/cli/MavenCli : 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 Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:141)
at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:283)
at Java.net.URLClassLoader.access$000(URLClassLoader.Java:58)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:197)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.Java:401)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.Java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.Java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.Java:254)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.Java:239)
at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.Java:144)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:266)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:356)
Java -version
を実行するとき:
Java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
Javaではすべて問題ないように見えますが、これは実行可能JARを実行しようとしたときにも発生します。手動でJava -jar(jar name)を実行することで回避できました
maven website によると、Java 6をサポートする最後のバージョンは3.2.5であり、3.3以降はJava 7を使用しています。私の考えでは、Maven 3.3以降を使用しているため、 Java 7(および、pomで適切なソース/ターゲット属性を設定)またはMavenをダウングレードします。
そのバージョン番号(51.0)は、Java 7用にコンパイルされたクラスを実行しようとしていることを示しています。Java6用に再コンパイルする必要があります。
ただし、一部の機能はJava 6と互換性がなく、Java 6は非常に古く、Oracleで(公に)サポートされていないことに注意してください。
私も同様の問題に直面しました。これを解決するには、Windowsの環境変数にJava_HOMEを設定します。この場合、バッチファイルでJava_HOMEを設定しても機能しません。
私は同じ問題に遭遇しました。 jdk 1.8とmaven 3.3.9を使用します。Java_HOMEをエクスポートした後、このエラーは表示されませんでした。 export Java_HOME =/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home /
問題は、JDKバージョンを適切に設定していないためです。メジャー番号51にはjdk 7を使用する必要があります。このように:
Java_HOME =/usr/Java/jdk1.7.0_79
同じ問題に直面し、Ubuntu Machine(16.04)でJavaの更新バージョンにJava_HOME変数を追加することで解決しました。 「Apache Maven 3.3.9」を使用している場合は、Java7以上でJava_HOMEをアップグレードする必要があります
これを行う手順
1-Sudo vim/etc/environment
2-Java_HOME = Javaインストールディレクトリ(MyCase-/opt/dev/jdk1.7.0_45 /)
3-echo $ Java_HOMEを実行すると、Java_HOMEに値が設定されます
4-Now mvn -versionは、目的の出力を提供します
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.7.0_45, vendor: Oracle Corporation
Java home: /opt/dev/jdk1.7.0_45/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-36-generic", Arch: "AMD64", family: "unix"