LoginSignup
14
15

More than 5 years have passed since last update.

/usr/libexec/java_home がいい子すぎる件

Posted at

ことのはじまり

MacBookProを新調しました。改めてOracleの公式dmgからJavaのいくつかのバージョンをインストール。JAVA_HOMEを利用してパスを通そうとしたそのとき。。

さっきインストしたやつらどこいった!?

ちなみにこれは、下記ディレクトリに各バージョンがインストールされます。

Javaのインストール場所
/Library/Java/JavaVirtualMachines/

/usr/libexec/java_home 半端ないって

以前は毎度あくせくググっていた(メモっとけ)が、とっても便利なコマンドがあることを知りました。
/usr/libexec/java_home -V でインストール済Javaの場所リストを表示してくれます。

/usr/libexec/java_home
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    10.0.2, x86_64: "Java SE 10.0.2"    /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
    1.8.0_181, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:   "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

JAVA_HOMEには小文字

お望みのversionのJavaを利用するには、パスを通す必要があります。見通しの良さのためにJAVA_HOMEをexportしてからパスに含めましょう。
だけどフルパス指定するの面倒。しかも切り替える可能性がある場合などは、もう毎度面倒。
そんなときは、-v(小文字)オプションを付けましょう。指定のJavaバージョンのパスのみを表示してくれます。
単体でコマンド打つとこのように表示されます。

-v
$ /usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home

exportするときは

.bash_profile.zshrcなどで利用するときは、

.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 10`
export PATH=$JAVA_HOME/bin:$PATH

のように記述することができます。これならバージョンを切り替えたいときもすごく簡単。
しかも、java10を指定したいときは、-v 1.10-v 10どちらでも認識してくれるいい子っぷりで泣けます。

Javaのパスを通すときまとめ

  • インストール済のJavaのインストール場所がわからなくなったらV(大文字)オプション
$ /usr/libexec/java_home -V(大文字)
  • パス通すときはJAVA_HOME使う
  • Javaのパスはv(小文字)オプション
export JAVA_HOME=`/usr/libexec/java_home -v 10`
export PATH=$JAVA_HOME/bin:$PATH

参照:https://qiita.com/ryo0301/items/3c9a02e03b4e9a41f576

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15