macOS Mojave(10.14)からLion(10.7)のJAVA_HOMEはどこにありますか?


559

Javaは、macOSの最新バージョンのオプションパッケージです。

しかし、インストールすると、JAVA_HOME環境変数が正しく設定されていないように見えます



Mac Sierraでは、/ライブラリ/ Java / JavaVirtualMachinesにjdkとシステム環境設定> Javaがあり、これら2つの違いは何ですか?
vikramvi 2017

別の質問、ありがとう
Olivier Refalo 2017

Javaのインストールが正常に完了していない可能性を過小評価しないでください。以下の優れた提案のどれもうまくいかないようであれば、[再]インストールしてみてください!
MarkHu

回答:


1059

JavaのオプションパッケージまたはOracleのJDK、あなたに次の行の1を追加し、インストール〜/ .bash_profileをファイルには、それに応じて環境変数を設定します。

export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

更新:Jilles van Gurp 応答に基づく-vフラグが追加されました。


1
知ってよかった。私はライオンの機能リストにあまり興奮していないと言わざるを得ない。私の使用法の強化の方法にはそれほど多くはないようです...
prodigitalson

1
@Oliver:ewww :-)それはおそらく最も役に立たないことです...私は常に複数のウィンドウを開いて画面上に配置しているので、一度に複数のものを見ることができます...通常はスペースごとに異なるレイアウトです。
プロデジタルソン、2011

11
これは私にはうまくいきませんでした。/System/Library/Frameworks/JavaVM.framework/Homeが機能しました。
混沌

7
マーベリックでも動作します!
cbare 2013年

3
Java 11およびHigh Sierraの場合、JAVA_HOME = "$(/ usr / libexec / java_home -v 11)"をエクスポートします
Willie Z

112

/usr/libexec/java_homeディレクトリではなく実行可能ファイルです。現在設定されているJAVA_HOMEを出力し、実際には変更しません。それがJava Preferencesアプリの目的です。私の場合、壊れているように見え、実際にはJVMを正しく変更しません。1.7 JVMがリストされていますが、実際にの出力を変更せずに、必要なすべてをトグル/アントグル&ドラッグアンドドロップできます/usr/libexec/java_home

Lion on Oracleから1.7.0 u6をインストールし、それを設定のデフォルトとして設定した後でも、Apple 1.6 Javaホームに戻りました。実際に機能する唯一の修正は、JAVA_HOMEを手動で設定することです。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/

少なくともこの方法でコマンドラインから実行すると、1.7が使用されます。/usr/libexec/java_homeまだ1.6を主張しています。

更新OSXのコマンドラインからJavaを理解するすると、これがどのように機能するかについてのより良い説明があります。

export JAVA_HOME=`/usr/libexec/java_home -v 1.7` 

それを行う方法です。これを1.8に更新しても問題ありません。


blog.hgomez.net/2012/07は壊れてますが、web.archive.org
Matt C

export JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
Leo Nguyen

83

私にとって、Mountain Lion 10.8.2では、最も投票されたソリューションは機能しません。Oracleを介してjdk 1.7をインストールし、homebrewからmavenをインストールしました。

私の解決策は、私も自家製からインストールしたhadoopのhadoop-env.shファイルからです。以下の文を〜/ .bash_profileに追加すると、機能します。

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

このソリューションは、OracleからJava 1.8がインストールされたOS X Yosemiteでも機能します。


1
Appleからjava 6をインストールしていれば、うまくいきました。ここでのポイントは、OracleのJava 7を使用していることである
オリヴィエRefalo

2
これはMavricksでうまく機能しますが、java_homeスクリプトの場所が異なります。 export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
Christopher Frost

1
Mac YosemiteでMavenをセットアップしようとしましたが、この方法でJAVA_HOMEを設定するとうまくいきます。
Alocus

Sierra 10.12とJava 8で動作します
カナックソニー

41

上記の答えのどれも私を助けませんでした。私はすべての答えが古いものだと思いますOS X

OS X Yosemite 10.10の場合、次の手順に従います

お好きなテキストエディタを使用して開きます。 ~/.bash_profile

//This command will open the file using vim
$ vim ~/.bash_profile

ファイルに次の行を追加して保存します(vimの場合は「:」の後に続きます)。

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

次に、ターミナルで次の2つのコマンドを入力して出力を確認します。

$ source ~/.bash_profile

$ echo $JAVA_HOME

2行目では、.bash_profileファイルの内容を更新しています。


私はあなたのpbを得たと思います-あなたは逆引用符の代わりに引用符を使用します 'vs `
Olivier Refalo

いいえ、正しい引用符を使用しています。代わりにコピーして貼り付けてみましたが、うまくいきませんでした。うまくいったので回答を更新しました。
ギリジュン

。私はあなたが二重引用符( ")であなたの答えを更新しました見ることができます@OlivierRefaloしかし、たとえ引用符は、それが動作します。
ギリ

どうもありがとう 。それは私のためにヨセミテ10.10で働いた
ビジェイ

2
これが実際に機能する唯一のソリューションです。他のソリューションでパスを追加すると、ターミナルを終了してパスが消えるまで、一時的に追加されます。永続的に追加するには、パスを.bash_profileファイルに保存する必要があります。その間、私は単純化のためにvimではなくnanoを使用しました。
Nadeem Jamali 2016年

31

Java 9といくつかのきちんとしたエイリアスの更新。

.bash_profile

export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`

最新バージョンの場合はそうで9あり、そうではないことに注意してください1.9

アクティブJavaを設定します。

export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH

異なるバージョンを切り替えるための追加のエイリアス:

alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH'
alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH'

端末でテスト:

% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)

編集:Java 10のアップデート

export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'

編集:Java 11のアップデート

export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'

29

それは期待するため、上記の、AmazonのEC2のツールで私のために動作しませんでしbin/javaなどの下にJAVA_HOME/System/Library/Frameworks/JavaVM.framework/Home働いた。


ライオンでしたか?Appleから公式のJavaパッケージを入手しましたか、それともOracleからJava6 / 7を入手しましたか?
Olivier Refalo 2012年

それはAppleのJavaパッケージだったと思います。
Cawflands

1
@AndrewHはい、私は同じことが真実であることがわかりました。AppleのJavaパッケージをインストールし、実際のライブラリパスを見つけました(たとえば、eclipse.iniで-vmを設定するため):/System
Library

情報をありがとう。多分私は単純すぎるかもしれませんが、なぜOS Xはそのような単純なことを完全に混乱させるのですか?
Kuberchaun 2015年


14

Mac OS X Lionでは、visualgcを実行するように設定するために、以下を使用しました。

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

1
私はあなたの提案を受け取りません:それはエクスポートJAVA_HOME =と/usr/libexec/java_home どう違うのですか?コマンド/ usr / libexec / java_homeは/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Olivier Refalo

visualgc / usr / libexec / java_homeの場合:/ usr / libexec / java_homeにあるjava.exeがJDKディレクトリにありません。JVMSTAT_JAVA_HOME環境変数を設定してエクスポートし、Sun J2SE 1.5.0 JDK(JREではない)を含むディレクトリを参照して、再試行してください。
EGHM

13

以下は私のために働いた。Java 8がインストールされたOSX YosemiteでZSHを使用しています。

次のコマンド/usr/libexec/java_homeは、JDKホームへのパスを出力します。

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

あなたの~/.zshrc

export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"

提案されたソリューションとどう違うのですか?
Olivier Refalo 2014年

提案されたソリューションと違いはありません。このソリューションは、ZSH、Java 8、OSX Yosemiteを使用しているユーザーに固有です。
Hemanta 2014年

OSX Yosemiteにjava 1.8がインストールされていて、チャームのように動作することが確認されました。
Ashoor 2015年

一般的なソリューションは、Java 8、zsh、およびYosemiteで問題なく機能します。
yaauie 2017

10

より良い(よりアップグレード可能な)方法は、以下を使用することです:

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

binホームの下にあるため、これはAWSでも機能するはずです。


1
「アップグレード可能性が高い」という文に少し同意しない/ usr / libexec / java_homeは、固定パスではなくパスを返すexeです。使用するjvmのバージョンに応じて、上記のパスは一致しません
Olivier Refalo

10

1.7.0_21-b12などの新しいOracle JVMはここにインストールされるようです。

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


1
確かに-そして、/usr/libexec/java_homeツールはこれらのJavaバージョンに対してエラーを返します。
Joe Dyndale

1
これは、v1.7 JREをダウンロードした後に機能する唯一の答えです
maxrossello

2
これは、JREをインストールする場合のパスです。評価された回答とコメントのほとんどはJDKに関するものです。同じではありません。
8なし1 2014年

9

macOS Mojave 10.14.1およびJAVA 11.0.1の場合、プロファイルを次のように設定しました

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

これを確認するためにターミナルにキー入力します:

$JAVA_HOME/bin/java -version

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

1
カタリナで動作します。Ty
TuGordoBello

5

私のアプローチは:

.bashrc

export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME

# -- optional
# export PATH=$JAVA_HOME/bin:$PATH

これにより、J6とJ7の切り替えが非常に簡単になります。


@AdonisSMU解決策を見つけましたか?
Luccas 2013年

3

私はそれを私のMacbook airの正確なパスに明示的に設定しなければなりませんでした。

続くステップ:

  1. しようとする echo $JAVA_HOME、使用して検索しようとしない場合、(それはパスを紹介します設定の場合)sudo find /usr/ -name *jdk
  2. -でbash pを編集します sudo nano ~/.bash_profile
  3. JAVAホームへの正確なパスを追加します(上記のステップ2のパスを使用) export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  4. 保存して終了
  5. -を使用してJAVA_Homeを確認します echo $JAVA_HOME

Java 8を搭載したMacbook AirでMACOS MOJAVE-10.14.2(18C54)を実行しています。


2

Mac OS X 10.9の場合、Oracleから最新バージョンのJREをインストールしてから、JAVA_HOMEを/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Homeにリセットしました。

より良い方法があると確信していますが、私を立ち上げました。

hughsmac:〜hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home


1
Mavericksの新規インストールでは、これが私にとって有効な唯一のソリューションです。提案されたようで(ここにありJDKホームにポイントのsqldeveloperしなければならなかったこのスレッド仕事にそれを得るため。
クリス・

2

OSX Yosemite、ZSH、およびJava SEランタイム環境8、私はしなければなりませんでした:

$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

〜/ .zshrcでJAVA_HOMEを export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"


1

Mac OSをアップグレードした後も同じ問題が発生しました。

  1. cmd> vi〜/ .bash_profile

  2. JAVA_HOMEの行を追加/更新します:export JAVA_HOME = "/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home"

  3. cmd> source〜/ .bash_profileまたは新しいターミナルを開く

jdkのバージョンは異なると思うので、/ Library / Java / JavaVirtualMachines /にあるバージョンを使用してください


1

Mac OS X(Yosemite)でJDKの複数のバージョンが必要な場合は、それらを自動的に切り替えるためのスクリプトを追加すると役立つ場合があります。

〜/ .bash_profileを編集して以下を追加します:

function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=`/usr/libexec/java_home -v $@`
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
setjdk 1.7

スクリプトが行うことは、最初にPATH内の他のJDKバージョンを削除して、それらが新しいJDKバージョンに干渉しないようにすることです。次に、インストールされているJDKバージョンをリストするコマンドである/ usr / libexec / java_homeを巧妙に使用します。-v引数は伝えJAVA_HOMEを例1.7のために、付属のバージョンでJDKのパスを返すように。また、新しく見つかったJAVA_HOMEディレクトリのbinディレクトリを指すようにPATHを更新します。最後に、単純に関数を実行して

setjdk 1.7

これにより、1.7ブランチの最新のインストール済みJDKバージョンが選択されます。特定のバージョンを選択するには、単に実行することができます

setjdk 1.7.0_51

代わりに。/ usr / libexec / java_home -Vを実行して、バージョンの選択方法の詳細を取得します。

PS 保存後に〜/ .bash_profileを読み込むことを忘れないでください 。


1

Java 11(JDK 11)の場合、次のコマンドで見つけることができます。

/usr/libexec/java_home -v 11

0

この回答は、ライオンではなくマウンテンライオンに関連しています。AWSコマンドラインツールでこれを行う必要がありました。AWS docsによると、実行するとwhich java戻ります/usr/bin/java

だから、私JAVA_HOME=/usrは私の中に設定.bashrc

どうやら、/usr/bin/javaへのシンボリックリンクです/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaそれはすべてを機能させるです。

更新

以下のコメントで述べたように、このJAVA_HOME値は、JAVA_HOME環境変数がAWSコマンドラインツール以外のもので使用される場合の理想的なソリューションではありません。ただし、ドキュメントに記載されているように、AWSコマンドラインツールでは問題なく機能します。


重要なのは、/ usrは正しいJAVA_HOMEディレクトリではないということです。bin / javaを見つけてもかまいません。しかし、ビルダー(ant、make)は、JAVA_HOMEを使用してlib / tools.jarのjavacコンパイラを参照する場合があります。ソリューションはそれらに対して失敗します
Olivier Refalo

ああ、情報をありがとう。あなたが正しいです。答えを更新します。
アンジャン

0

Mac Yosemiteの場合、

JDK 1.7.0_xxは

$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

JAVA_HOME

/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home

この回答が役立つように情報を追加してください。
ミカ

0

オーストラリア税務署(ATO)のAUSKEYを使用している場合は、AUSKEYをアンインストールする必要があります。これにより、JAVA_HOMEの問題が解決されました。

また、MACユーザーには必要ありません。うん!


0

High Sierra 10.13.4でFishシェルを使用していて、Brew経由でJavaをインストールしました。

それは自動的に設定されないので、私のシステムで正しく設定するために:

set -U JAVA_HOME (/usr/libexec/java_home)

0

netbeans.confファイルに1.8 jdkバージョンのjava_homeを設定するだけです。

/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

コメント行のコメントを外します:

netbeans_jdkhome="path/to/jdk"

私の場合、1.8 jdkへのパスを設定します。

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"

このアプローチでは、Mac OSでいくつかのjdkバージョンを使用できます


0

MacのFishターミナルユーザー(Linuxでも利用できると思います)の場合、これは機能するはずです。

set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8       //or whichever version you want as default

-1

Macユーザー用。Java 8を追加する必要があります

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

Java 6:

export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

ref:http : //qiita.com/seri_k/items/e978c1339ce51f13e297

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