SHIBUYA 3%

(元在宅が)渋谷で働くエンジニアの備忘録的memo & 雑記 - ココロはいつもSHIBUYAに在り

Javaのバージョンをコマンドで簡単に切り替える(Mac限定)

最近java9でいろいろイジりながらも、職場はまだ8だったり、java系のツールでjava9で動かないこともあり簡単に切り替える方法ないかと模索していて、個人的な着地点を見つけれたのでメモ。

環境

  • Mac Sierra
  • Python2系(Macのデフォルトで入ってたやつ)
  • peco
  • zsh

コマンド

export JAVA_HOME=`/usr/libexec/java_home -X | python -c 'import sys, plistlib; plist = plistlib.readPlist(sys.stdin); print "\n".join(str(dict["JVMVersion"]) for dict in plist)' | peco | xargs /usr/libexec/java_home -v`

f:id:fukurou31:20171023035715p:plain

PlistBuddyで出来るかと思ったんですが引数に渡せるのがファイルパスのみで、一時ファイルを作成する必要があったため、plist文字列を直接読み込めるようにPythonで書いてます。
Pythonが分からなさすぎる。。もう少し効率的な書き方があればご教授ください。

zshの設定ファイルに以下Functionを定義(よくjmcコマンドと誤爆する)

jvc() { export JAVA_HOME=`/usr/libexec/java_home -X | python -c 'import sys, plistlib; plist = plistlib.readPlist(sys.stdin); print "\n".join(str(dict["JVMVersion"]) for dict in plist)' | peco --prompt "Switch Java Version >" | xargs /usr/libexec/java_home -v` }