macOS X 10.6でJAVA_HOME環境変数を何に設定すればよいですか?


436

シェルスクリプトを使用して環境を構成する多くのJavaアプリケーションは、JAVA_HOME環境変数を使用して正しいバージョンのJavaを起動したり、JRE JARを検索したりします。

macOS X 10.6では、次のパスがこの変数に対して有効であるようです

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

これらの一部は、実際の現在のVMへのシンボリックリンクです(Javaプリファレンスペインで定義)。

しかし、どちらを使用する必要がありますか、またはそれらのいずれを使用しても問題ありませんか?


回答:


849

JAVA_HOMEそのコマンドの出力を設定するだけで、Java設定で指定されたJavaパスが表示されます。.bashrcこれは、この変数を設定する私のファイルのスニペットです。

export JAVA_HOME=$(/usr/libexec/java_home)

私はそのテクニックで何の問題も経験していません。

時々JAVA_HOME、Javaの値を以前のバージョンに変更する必要があります。たとえば、私が管理している1つのプログラムでは、OS Xで32ビットJava 5が必要であるため、そのプログラムを使用する場合は、次のコマンドJAVA_HOMEを実行して設定します。

export JAVA_HOME=$(/usr/libexec/java_home -v 1.5)

java_homeパスに含まれていない人のために、このように追加します。

sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home

参照


20
マウンテンライオンにもある
sghill 2012

57
Mavericksでも引き続き有効
Pascal

42
ヨセミテでも引き続き有効です。;)
Geoffrey Wiseman

42
エルキャピタン。小切手!
gattshjoty

11
モハベでも
引き続き

40

また、JDKを反映するようにPATHを設定するのも興味深いことです。JAVA_HOMEを追加した後( 'mipadi'によって引用された例で実行できます):

export JAVA_HOME=$(/usr/libexec/java_home)

〜/ .profileにも追加:

export PATH=${JAVA_HOME}/bin:$PATH

PS: OSXの場合、通常、.bashrcではなくHOME dirで.profileを使用します


デフォルトのbashを実行しているOSXの場合、私は通常bash .bash_profileを使用します。なぜ一般的なものよりも使用するの.profileですか?
LeeGee 14

1
.profileは汎用なので、shまたはbashで機能します.bash_profileが、はに限定されbashます。また、これ.bash_profileはなどのを使用するアプリから設定を分離しますMacPorts。ただし、この2つは安全に使用できます。詳細はこちら
ルカサルーダ14

1
—参考までに、あなたが提供したリンクは、bash(つまりデフォルト)では.bash_profileオーバーライドが使用されているという私の疑いを裏付けています.profile
LeeGee 14

@LeeGeeはい、それはそれがすべてのバリエーション.bash_profileに対して特定であるのに対し、それ.profileが一般的であるためshです。
lucasarruda 2014

1
OS / Xはjavaあなたの/usr/bin中にリンクを張っているので$JAVA_HOME、パスに明示的に追加する必要はありません。
Zac

20

私は持っていますMAC OS X(シエラ)10.12.2を

私は設定JAVA_HOMEを上の仕事にネイティブに反応は、次の手順に従うことにより、(Androidはアプリのため)。

  • ターミナルを開きます(コマンド+ R、ターミナルを入力、Enterキーを押します)。

  • 以下の行を〜/ .bash_profileに追加します。 export JAVA_HOME=$(/usr/libexec/java_home)

  • 次のコマンドを実行します。 source ~/.bash_profile

  • 次のコマンドを入力して、JAVA_HOMEの正確な値を確認できます echo $JAVA_HOME

返される値(出力)は以下のようになります。 /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

それでおしまい。


これは役に立ちます。ありがとう。しかし、最後のステップを含めなかったと思います。これは、JAVA_HOMEを.bashrc / .bash_profile / .zshrc /などの戻り値に設定します。間違っている場合は修正してください。
TheProletariat

2
必須ではありません。私の場合は、$JAVA_HOME参照$(/usr/libexec/java_home)$(/usr/libexec/java_home) 内部と呼ばれている/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Homeシステムによる。
hygull 2018年

1
とった。私の場合は必須でした。ありがとう。
TheProletariat

13

Mac OS 10.6.8を使用しています

私にとって最も簡単な解決策は、単に

$ export JAVA_HOME=$(/usr/libexec/java_home)

機能するかどうかをテストするには、

$ echo $JAVA_HOME

それが示している

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

あなたもテストすることができます

$ which java


9

使いやすい/Library/Java/Homeです。設定ペインの動作方法は、優先バージョンで最新である必要があります。


/置き場 。/ System / Library / ..ではなく、/ Library / javaを指していることを確認してください。
JRun、2014

1
これはもはや正確ではありません。OS X 10.5以降では、/ usr / libexec / java_homeを使用してパスを見つけます。
クリストファージョンソン

8

上記は、YOSEMITE for GRAPHICAL APPLICATIONSでは機能しません!日食のように、またはSpotlightで始まった何か。(.bash_profile、launchd.confはターミナルセッションでのみ機能します。)Eclipseを開始する前に、ターミナルウィンドウを開いて次のコマンドを実行します。

launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

(あなたのインストールパスで!おそらくフルパスの代わりに$(/ usr / libexec / java_home)でも動作します。)

永続的な解決策に関する優れた記事全体をここでご覧ください 。launchd.confによる環境変数の設定がOS X Yosemite / El Capitan / macOS Sierraで機能しなくなりましたか?


2

私はこのスタックが役立つことを見つけました、私は同じ問題を抱えていて、私は修正することができました:

私のJavaパスはここにありました:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

私に入れるために必要でした.bash_profile

export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

助けを願って


2

アプリケーションについて言及したため、ターミナルのセットアップをスキップし、永続的なシステム環境変数のセットアップ(macOS Sierraで機能します。ElCapitanでも機能するはずです):

launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)

(これにより、JAVA_HOMEが最新の1.8 JDKに設定されます。たとえば、javac 1.8.0_101、javac 1.8.0_131などのサーバーアップデートが行われた可能性があります)
もちろん、1.8を1.7または1.6に変更します(本当に?)。


1

他の回答が指摘しているように、Javaホームディレクトリを見つける正しい方法はを使用すること/usr/libexec/java_homeです。

これに関する公式のドキュメントは、アップルのテクニカルQ&A QA1170にあります。OSX上の重要なJavaディレクトリhttps : //developer.apple.com/library/mac/qa/qa1170/_index.html


これは複製です!
フランクリンYu

アップル社の公式ドキュメントへのリンクを含めることで、冗長性がなくなると思います。しかし、そうである場合、正しいアクションは、コメントではなく重複としてフラグを立てることです。
クリストファージョンソン

回答を重複としてマークできないため、コメントを作成しました。スタックオーバーフローでは、ユーザーが質問を重複としてマークすることしかできません(残念ながら)。リンクは役に立ちますが、すべての有用な情報を1つの回答にまとめるため、現在の回答へのコメント(または、すでに機能があるため、リンクで編集するだけ)の方が良いと思います。Stack Overflowが新しい答えを書くよりも現在の答えを修正することを好むというガイドラインがどこかにあったと思います。
フランクリンYu

1

私にとって、mavenは.mavenrcファイルから動作するようです:

echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc

私もSOでそれを拾ったと確信していますが、どこにいるか思い出せません。


1

ファイルを作成する ~/.mavenrc

次に、これをファイルに貼り付けます

export JAVA_HOME=$(/usr/libexec/java_home)

テスト

mvn -v


.mavenrcファイル内でJavaバージョンを非常に簡単に変更できるため、このアプローチが気に入っています。
Spindizzy、2018年

1

次のコマンドを使用して、JAVA_HOME環境変数を設定する前に、デフォルトのターミナルシェルを確認することをお勧めします。

$ echo $SHELL
/bin/bash

デフォルトのターミナルが/ bin / bash(Bash)の場合、@ hygullメソッドを使用する必要があります

デフォルトの端末が/ bin / zsh(Zシェル)の場合、これらの環境変数を〜/ .zshenvファイルに次の内容で設定する必要があります。

export JAVA_HOME="$(/usr/libexec/java_home)"

同様に、上記以外の端末タイプの場合は、それぞれの端末環境ファイルで環境変数を設定する必要があります。

この方法は、macOS Mojaveバージョン10.14.6動作することをテスト済みです


-1

Fish Shellユーザーの場合、次のようなものを使用します。 alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"

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