web-dev-qa-db-ja.com

MavenのインストールOSXエラーUnsupported major.minor version 51.0

私はこの手順に従ってmavenをインストールしました:(チュートリアル)

Java_HOME=/Library/Java/Home
export M2_HOME=/Users/steven/zimmermann/maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

echo $Java_HOME
echo $M2_HOME
echo $M2
echo $PATH

nano .bash_profile

それから私はこのように.bash_profile sthにエコーを書きました:

Java_HOME=/usr/libexec/Java_home
M2_HOME=/path/to/your/Apache-maven-3.x.x
M2=/path/to/your/Apache-maven-3.x.x/bin
PATH=/path/to/maven/bin:/$….bla-bla-bla…

そしてまた私はこれを.bashrcに書いた。

export M2_HOME=/Users/steven/zimmermann/maven
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

今私がバージョンをチェックしたいとき(mvn -v)私は次の例外を得ます:私はいくつかのバージョンが間違っていると思いますが、私は知りません。

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:637)
    at Java.lang.ClassLoader.defineClass(ClassLoader.Java:621)
    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.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
javac -version
javac 1.8.0_40
114
Steven

問題は、MacでJava_HOMEを正しく設定していないためです。そのためには、次のように設定しなければなりません。

export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

私の場合、私のJDKのインストールはjdk1.8.0_40です。必ずあなたのものをタイプしてください。

それからあなたはmavenコマンドを使うことができます。

よろしく!

275
GerSua

むしろ試してみてください。

$Java_HOME/bin/Java -version

MavenはJREライブラリのクラスパス解決に$Java_HOMEを使用します。確実に特定のJDKを使用するには、コンパイル前に明示的に設定します。次に例を示します。

export Java_HOME=/usr/Java/jdk1.7.0_51

1.7未満のバージョンがなく、Maven 3.3.1を使用していますか?この場合、理由は新しい前提条件です。 https://issues.Apache.org/jira/browse/MNG-578

16
René

あなたが私のようなものなら、動的な$HOME/.zshrcソリューション。 Linux @ work; MBP/A @ home

if [[ $(uname) == "Darwin" ]]; then export OSX=1; fi
if [[ $(uname) ==  "Linux" ]]; then export LINUX=1; fi

if [[ -n $OSX ]]; then
        export Java_HOME=$(/usr/libexec/Java_home)
else
        export Java_HOME=/usr/lib/jvm/default-Java
fi
7
evandrix

私は、brewを使って、古いバージョンのmaven(2.x)を入れて解決しました。

brew uninstall maven
brew tap homebrew/versions 
brew install maven2
3
javaboygo

Eclipseでは、Java_HOMEを変更する必要はありません。Mavenの実行構成を1.6以上に変更するだけです(プロジェクトがJava 6上にある場合でも、Mavenは変更しないでください)。プロジェクトを右クリックし、「Mavenビルド」または「別のユーザーとして実行」>「構成の実行」を選択して、正しいJDKバージョンを設定します。

2
Noumenon

あなたの.profileでこれを行います -

export Java_HOME = `/ usr/libexec/Java_home`

(バッククォートは必ずコマンドを実行し、その値をJava_HOMEに入れてください)

0
Pradeep