プロジェクトによって異なるバージョンのJavaを使用したいケースが出てきます.プロジェクトごとにスムーズにJavaのバージョンを切り替えられる環境を構築します.
jenvのインストール
anyenv
でのインストールを前提とします.anyenv
が未インストールの場合は事前にインストールします.Macでanyenv
をインストールする手順は以下を参考にしてください.
システムの現在のJavaのバージョンを確認します.
java --version
openjdk 18.0.1.1 2022-04-22
OpenJDK Runtime Environment (build 18.0.1.1+2-6)
OpenJDK 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)
インストール済のJDKのパスを確認します.
% /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
18.0.1.1 (arm64) "Oracle Corporation" - "OpenJDK 18.0.1.1" /Users/[username]/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
/Users/[username]/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
システムで複数のバージョンをインストール出来るように、cask-versions
をインストールします.
$ brew tap homebrew/cask-versions
jenv
をanyenv
経由でインストールします.
anyenv install jenv
exec $SHELL -l
新しいJDKのインストールとjenvへの追加
例として新しくjdk-9.0.4
をインストールします.Java Archive Downloads – Java SE 9 | Oracle 日本 以下をダウンロードします.Java SE Development Kit 9.0.4
ダウンロードしたインストーラでインストールします.
jdk-9.0.4_osx-x64_bin.dmg
インストール済みのJDKのバージョンを確認します.jdk9
をインストールしてもシステムのJDKのバージョンは変わりません.
java --version
openjdk 18.0.1.1 2022-04-22
OpenJDK Runtime Environment (build 18.0.1.1+2-6)
OpenJDK 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)
インストール済のJDKのバージョンを確認します.9.0.4
が追加されました.
% /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
18.0.1.1 (arm64) "Oracle Corporation" - "OpenJDK 18.0.1.1" /Users/[username]/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
9.0.4.0.11 (x86_64) "Oracle Corporation" - "Java" /Library/Internet PlugIns/JavaAppletPlugin.plugin/Contents/Home
9.0.4 (x86_64) "Oracle Corporation" - "Java SE 9.0.4" /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
/Users/[username]/Library/Java/JavaVirtualMachines/openjdk-18.0.1.1/Contents/Home
jenv
で利用可能なバージョンを確認します.まだjenv
には9.0.4
は追加されていません.
% sudo jenv versions
* system (set by /Users/[username]/.jenv/version)
jenv
に9.0.4
を追加します.
% jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
jenv
で利用可能なバージョンを確認します.jenv
に9.0.4
が追加されました.
% jenv versions
* system (set by /Users/takuya/.anyenv/envs/jenv/version)
9.0
9.0.4
oracle64-9.0.4
jenv
のインストールフォルダを確認すると,anyenv/envs/jenv/versions
配下に9.0.4も追加されています.
% ls -alh ~/.anyenv/envs/jenv/versions/
total 0
drwxr-xr-x 5 [username] staff 160B Jul 19 10:40 .
drwxr-xr-x 22 [username] staff 704B Jul 19 10:40 ..
lrwxr-xr-x 1 [username] staff 61B Jul 19 10:40 9.0 -> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
lrwxr-xr-x 1 [username] staff 61B Jul 19 10:40 9.0.4 -> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
lrwxr-xr-x 1 [username] staff 61B Jul 19 10:40 oracle64-9.0.4 -> /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
9.0
, 9.0.4
, oracle64-9.0.4
と3つのバージョンが追加されていますが,どれも同じ/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home
へのシンボリックリンクになっています.そのためjenv
で指定するときはいずれを使っても違いはないようです.
JAVA_HOME
をjenv
のパスを参照するように変更します.
$ jenv enable-plugin export
You may restart your session to activate jenv export plugin echo export plugin activated
セッションをリスタートし,$JAVA_HOME
が変更されていることを確認します.
% jenv doctor
[OK] JAVA_HOME variable probably set by jenv PROMPT
[OK] Java binaries in path are jenv shims
[OK] Jenv is correctly loaded
% echo $JAVA_HOME
/Users/[username]/.anyenv/envs/jenv/versions/system
Java環境の切り替え (ローカル)
% mkdir examples
% cd examples
% jenv local 9.0
% java --version
java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
ローカル用に作成された.java-version
ファイルを確認します.jenv
ではローカルでJavaのバージョンを指定すると,ディレクトリ内に.java-version
ファイルを作成し,そこにバージョンを記載します.
% cat ./.java-version
9.0