技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

複数のインストール済み Java を速攻で切り替える jenv

つってもそんなに難しい話はない。

Install

Mac なら brew だよね。

$ brew install jenv

Homebrew 知らない人はこっち。
brew.sh

ちなみに Windows だと jenv.io なるサイトで Windows で動く Jenv 頑張ってたらしいのだけど、消えていた(2020/09/20 現在)。

インストールされると、実質 ~/.jenv 以下にインストールされます。
インストール後は .bash_profilezsh の場合は ~/zprofile に次の文言を追加

eval "$(jenv init -)"

pyenv とかと違って、こいつ自体に Java インストール機構はない。文字通り環境切り替えよう。
で、登録に関しては /usr/libexec/java_home -V でインストール済み JavaHome ディレクトリを検索。

$ /usr/libexec/java_home -V                                           
Matching Java Virtual Machines (2):
    14.0.1, x86_64: "OpenJDK 14.0.1"    /Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
    11.0.5-zulu-11.35+15, x86_64:   "Zulu 11"   /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home

このパスを利用して

$ jenv add /Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
openjdk64-14.0.1 added
14.0.1 added
14.0 added
14 added

こうすると追加される。
で、この切替を行うにあたっては

$ jenv versions
  system
  11.0
  11.0.2
  14
  14.0
  14.0.1
  openjdk64-14.0.1
* zulu64-11.0.2 (set by /Users/armeria/.jenv/version)

$ jenv --help  
jenv 0.5.4
Usage: jenv <command> [<args>]

Some useful jenv commands are:
   commands    List all available jenv commands
   local       Set or show the local application-specific Java version
   global      Set or show the global Java version
   shell       Set or show the shell-specific Java version
   rehash      Rehash jenv shims (run this after installing executables)
   version     Show the current Java version and its origin
   versions    List all Java versions available to jenv
   which       Display the full path to an executable
   whence      List all Java versions that contain the given executable
   add         Add JDK into jenv. A alias name will be generated by parsing "java -version"

See `jenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/jenv/jenv/blob/master/README.md

$ jenv global openjdk64-14.0.1

$ java --version
openjdk 14.0.1 2020-04-14
OpenJDK Runtime Environment (build 14.0.1+14)
OpenJDK 64-Bit Server VM (build 14.0.1+14, mixed mode, sharing)

とまぁこんな感じ。
11 依存のプロダクトと、14 対応の OSS を使うときに切り替えとしては便利です。