Mac OS XのJava JDK 7をインストールした後-mvn -versionはまだJavaバージョン1.6.0_31を表示します


117

Oracleは4月26日にMac OS X用のJava JDK 7をリリースしました。私はインストール手順に従いました。ターミナルウィンドウでjava -versionを実行すると、次のようになります。

java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

ただしmvn -version、ターミナルウィンドウで行うと、次のようになります。

Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", arch: "x86_64", family: "mac"

MavenでJava JDK 1.7.0_04を使用するにはどうすればよいですか?

助けてくれてありがとう。

回答:


126

最後にここで答えを見つけました:

http://www.adam-bien.com/roller/abien/entry/java_se_development_kit_7

JAVA_HOME=$(/usr/libexec/java_home)Macで代わりに使用して、「Java Preferences.app」から現在のjdkを設定する必要があります。

〜/ .profileにJAVA_HOMEを設定します


4
最近Java 6をインストールしましたが、JavaPreferences.appを見つけることができません。bczmacはJavaのサポートを提供していません。JavaPreferencesを使用せずにjvmを設定する方法を教えてください。
amod、2013

2
あなた自身の答えを受け入れることができます。これにより、残りのすべての人がこの問題を解決したことがわかります。そして、あなたはさらに10の
ポンツ

5
〜/ .bash_profileに追加しました:export JAVA_HOME = $(/ usr / libexec / java_home)
skytteren

1
または、Java Preferences.app
mac

El CaptianでJava Preferences Appを開くことができないので、System Preferences-> Javaに移動しました。
Wolf7176

34

問題は、JavaVm.frameworkのバージョン内のシンボリックリンク「CurrentJDK」が古いjdkを指しているため、次のコマンドを使用してCurrentJDKを最新のもの(1.7.0_45)に設定すると機能する

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK

リファレンス:http : //java.dzone.com/articles/installing-jdk-7-mac-os-x


あなたがのために右のバージョンを指定しますjdk1.7.0_45.jdk、鉱山だったjdk1.7.0_51.jdk
ndequeker

1
Oracleの開発者がなぜそれを自動的に行わなかったのでしょうか。それは私にとってささいなことではありません。この答えは私の一日を救った。
Ivan Voroshilin 2014年

これは私のために働いていません。私はエルキャプティアンにいます。mvn javaバージョンは変更を拒否します。JAVA_HOMEは正確です
Wolf7176

17

Java環境設定からパスを見つけるには、 /usr/libexec/java_home -X

私のJava7エントリは次のようになります。

<dict>
    <key>JVMArch</key>
    <string>x86_64</string>
    <key>JVMBundleID</key>
    <string>com.oracle.java.7u04.jdk</string>
    <key>JVMEnabled</key>
    <true/>
    <key>JVMHomePath</key>
    <string>/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home</string>
    <key>JVMIsBuiltIn</key>
    <false/>
    <key>JVMName</key>
    <string>Java SE 7</string>
    <key>JVMPlatformVersion</key>
    <string>1.7</string>
    <key>JVMVendor</key>
    <string>Oracle Corporation</string>
    <key>JVMVersion</key>
    <string>1.7.0_04</string>
</dict>

6
grrrrr、私はそれをしました、そしてそれが私のjdk1.7のためにリストするパスは全く存在しません:(
Dean Hiller

9

JAVA_HOME環境変数を新しいJDK 1.7の場所に変更する必要があります。

JAVA_HOMEが定義されている可能性のある場所については、この質問を参照してください。ターミナルwhich javaで、Javaインストールのパスを見つけるために入力し、そのパスJAVA_HOMEを指すように更新します(ただし、末尾のbinフォルダーは除外します)。


Mac OS Xでこれが必要ですか?過去にそれをする必要はありませんでした。私はセットJAVA_HOMEへの必要性を行う場合はどのように私は知っている私は、任意のJDK 1.7へのパスを示していないパス情報とMac上のJava環境設定ユーティリティアプリをインストール与えなかったのJava JDK 7のインストールとして使用するものをパス
ブルースフィリップス

上記の質問を見ると、JAVA_HOMEがすでに定義されており、現在古い1.6 JDKを指していることがわかります。OSXで環境変数を変更する方法はよくわかりませんが、これはMavenがデフォルトで使用する方法です。
ネイト

問題は、Appleアップデートが通常、Javaバージョンをアップデートし、JAVA_HOME値を設定することです。.bashrcのJAVA_HOME値の設定は、Linuxの場合のようにOS Xでは機能しません。また、OracleによってインストールされたJDK 7へのパスはどこにもありません。
Bruce Phillips

また、私の質問はあなたがリンクした投稿の複製ではありません。私は、OS X上だとOracleはちょうど4月26日にリリースされたのMac OS X用のインストール使用してJava JDK 7に更新しました
ブルース・フィリップス

.bashrcの代わりにMacが.bash_profileを使用することはなく、/ System / Library / Java / JavaVirtualMachines /の下にある新しいバージョン1.7.0 Javaをポイントする必要があるインスタレーションを見つけることができるはずです
peter_budo

7

Mac OSX 'Mavericks'を実行している64ビットMacに誰かがMavenをインストールしている場合は、時間を節約し、Mavenをインストールしようとする手間を省きます。私はこれを追跡しようとしました(java_homeの場所がMavericksで変更されたため失敗しました:

http://maven.apache.org/download.cgi

このウェブサイトが見つかるまで髪の毛を抜いていました。Homebrewをインストールして、このページの指示に従うことをお勧めします。http//techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac -osx-109.html

完了したら、$ maven -versionが機能しない場合でも慌てる必要はありません。代わりに、$ mvn --versionをmaven.apache.org/download.cgiの推奨どおりに使用してください。

動作しましたが、Java SDK Mavenが使用していたJavaバージョン1.6.0_65がシステムにインストールした最新のSDKではないことに気付きました。

JAVA_HOME =を設定したら/usr/libexec/java_home

正しいSDKを使用していました:Mavenホーム:/usr/local/Cellar/maven/3.1.1/libexec Javaバージョン:1.7.0_45、ベンダー:Oracle Corporation Javaホーム:/Library/Java/JavaVirtualMachines/jdk1.7.0_45。 jdk / Contents / Home / jreデフォルトのロケール:en_US、プラットフォームのエンコード:UTF-8 OS名: "mac os x"、バージョン: "10.9"、アーチ: "x86_64"、ファミリー: "mac"

成功!しかし、待ってください...次にターミナルを開いてmvn -vを実行したとき、Javaバージョン1.6に戻りました。WTH!

私が読んだものからのある種の想定されるバグを使用します:echo JAVA_HOME = /usr/libexec/java_home -v 1.7| sudo tee -a / etc / mavenrc

そして今:

Mavenホーム:/usr/local/Cellar/maven/3.1.1/libexec Javaバージョン:1.7.0_45、ベンダー:Oracle Corporation Javaホーム:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jreデフォルトのロケール:en_US、プラットフォームのエンコード:UTF-8 OS名: "mac os x"、バージョン: "10.9"、アーチ: "x86_64"、ファミリー: "mac"


export JAVA_HOME=`/usr/libexec/java_home`JAVA_HOME変数を正しくエクスポートするために私はうまくいきました。
cdeszaq 2013

4

MavenがまだJava 6を使用している理由は、それを起動する/ usr / bin / mvnスクリプトが、Javaプリファレンスで指定された現在のJavaバージョンを解決するための正しいOS / Xメソッドを使用しないためです。詳細については、このMavenの問題を参照してください。

http://jira.codehaus.org/browse/MNG-4226

投票すると修正される可能性があります。それまでの間、コメントとパッチに示されているように/ usr / bin / mvnスクリプトを変更すると、望ましい結果が得られます。


2

私のマシンでOK。はい、Oracleインストーラーはその役割を正確に実行しませんでした。1.6がまだ実行されていた後、それは私を終わらせました。

java run time was updated 

java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

しかし、SDK HOMEは実際には1.6を指すsimリンクです

/Library/Java/Home ファインダー内のGetInfoが指す /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

ターミナルで

./Home -> /System/Library/Frameworks/JavaVM.framework/Home

図を行きます。

私はここで1.7を見つけ、それを使ってビルドしています: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home


0

問題は、Java起動メカニズムに部分的にあると思います。私はEclipseにJava7でコードを実行させることができましたが、Eclipse自体はまだJava6で実行されていると思います。また、私は最後に1年前にコンパイルされ、jarbundler-2.1.0.jar(オプションjvmversion = "1.6+")を使用してビルドされたJavaプログラムを持っています。.appファイルをダブルクリックするとJava6が実行されますが、.app内の.jarファイルをダブルクリックするとJava7が実行されます。

また、JAVA_HOMEを使用していませんが、質問に示されている正しいJavaバージョン「1.7.0_04」を取得しています。JAVA_HOMEは赤いニシンのようです。たぶんMavenはそれを必要としていますが、Eclipseはそれを使用していないようで、jarファイルも起動していません。

また、Java設定ツールでJava7を設定した後は、.app javaファイルの起動に影響しないようです。ただし、ターミナルからの「java -version」はうまく機能します。Java7オプション以外のチェックをすべて外したところ、Eclipseがまったく動作しなくなりました。


0

JAVA_HOMEがローカルユーザーのbashにある場合、mvnは、設定したJAVA_HOMEに関係なく、システムの現在のJavaバージョンを選択します。

したがって、最初にコマンド ' which mvn 'を実行し、使用している実行可能mvnを確認します。その後編集そのMVNファイルJAVA_HOMEの変更ご希望Javaホームに変数を。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.