Contents
はじめに
Javaを使っていて、他のバージョンを利用する必要がでてきたため
バージョンを簡単に管理できるものを探したところ、
SDKMAN というツールが良さそうだったので、使ってみました。
環境
・macOS Big Sur バージョン 11.2.3
・Bash version 3.2.57
インストール方法
こちらの公式サイトの手順に従って、行いました。
まずは、念の為、下記のコマンドでSDKMANのホームディレクトリとして、
変な値が設定されていないか確認してください。
ぼくが初めて実行したときは、これが違うユーザをさしていたため、
この後の処理で行われるmkdirコマンドで、 Permission deniedがでて、失敗してしまいました。
おそらく、何もしてなければ、何も返ってこないはずです。
$ echo $SDKMAN_DIR
上記の確認コマンドで、何か返ってきた場合は、
下記のコマンドで、今のユーザのホームディレクトリを設定してください。
上のコマンドで、ユーザのホームディレクトリのパスが返ってきたなら不要です。
$ export SDKMAN_DIR='/Users/ユーザ名'
上記のコマンド実行後、
再度、1つ目のコマンドを実行して、設定した期待通りのパスが返ってくれば、大丈夫です。
ここから、公式サイトに記載のインストール手順です。
まず、下記のコマンドを実行してください。
$ curl -s "https://get.sdkman.io" | bash
色々と文字が表示され、
最後にEnjoy!と表示されれば、おそらく無事に完了です。
~/.sdkmanディレクトリが作成されているはずです。
また、実行結果でも実行するように表示されますが、
下記のコマンドを打って、SDKMANに必要な設定を適用します。
$ source "/Users/ユーザ名/.sdkman/bin/sdkman-init.sh"
その後、動作確認として、下記のコマンドを実行します。
下記のようにSKDMANのバージョンが返ってくれば、インストール完了です。
$ sdk version
SDKMAN 5.11.0+644
ちなみに、1つ前のsourceコマンドは、
新しくターミナルを起動したり、別ウィンドウを立ち上げた際は、
本当なら、毎回、実行する必要があります。
しかし、SDKMANのインストール処理の中で、
ターミナル起動時に読み込まれる~/.bash_profileに、下記の3行が書き込まれています。
(zshを使っている場合は、~/.zshrcになるかと思います。)
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/ユーザ名/.sdkman"
[[ -s "/Users/ユーザ名/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/ユーザ名/.sdkman/bin/sdkman-init.sh"
1行目は、上でも記載したSDKMAN_DIR変数への定義です。
2行目は、sdkman-init.shというファイルがあるならば、sourceから始まるコマンドを実行します
という記述です。
これによって、ターミナルを起動したり、別ウィンドウを開くたびに、
sourceコマンドを打つ必要がなくなり、
sdkコマンドが、いつでも使えるようになります。
使い方
公式サイトからいくつか抜粋して紹介いたします。
インストール可能リストを確認
下記のコマンドで、SDKMANを使ってインストールできるものの一覧が確認できます。
SDKMANでは、JavaだけでなくKotlinやGradleなどもインストールが可能なのだそうです。
$ sdk list
ただ、今回はJavaをインストールしたいので、対象をJavaのみに絞ります。
下記のコマンドを実行してください。
表示されたリストがインストール可能なものの一覧です。
$ sdk list java
Javaのインストール
最新の安定版をインストール
下記のコマンドだけで、最新の安定版がインストールされます。
$ sdk install java
特定のバージョンをインストール
下記のコマンドだけで、特定のバージョンをインストールできます。
sdk list javaコマンドで表示された表から、好きなバージョンを選び、
一番右側の列のIdentifierを指定します。
$ sdk install "特定のバージョンのIdentifier"
ちなみに、2つ目からは下記のようにインストールしたバージョンを
デフォルトにするかどうか聞かれます。
Do you want java 8.0.282.hs-adpt to be set as default? (Y/n):
すでにローカルにあるバージョンを管理に追加する
SDKMANを使わないで、インストールしたJavaも管理に追加することができます。
Javaを初めて使うときに、最初から複数バージョンを管理しようとは思わないと思うので、これは便利だと思いました。
下記のコマンドで、インストール済みのJavaをSDKMANの管理に加えることができます。
ぼくの場合、oracleのJDKをすでにインストールしていたので、下記のように管理に追加しました。
11.0.3-oracleは、自分でつけた名称です。
$ sdk install java "他バージョンとかぶらない名称" "インストール済みのJavaのHomeディレクトリ"
# 具体例
# sdk install java 11.0.3-oracle /Library/Java/JavaVirtualMachines/jdk-11.0.3.jdk/Contents/Home
ちなみに、この方法で追加した場合、
sdk list javaコマンドで確認すると、下記のように表示され、
他のバージョンと同じように扱うことができるようになります。
Unclassified | | 11.0.3 | none | local only | 11.0.3-oracle
今利用中のバージョンの確認
下記のコマンドで確認できます。
$ sdk current java
バージョンの切り替え
下記のコマンドで行えます。
これは、今のターミナルでのみ有効となります。
他のターミナルを開いたら、デフォルトが適用されるので気をつけてください。
$ sdk use java "特定のバージョンのIdentifier"
デフォルトバージョンの切り替え
下記のコマンドで行えます。
$ sdk default java "特定のバージョンのIdentifier"
利用する上では、このぐらいで十分かなと思います。
インストールしたものを削除したいなどとなったら、
上であげた公式サイトを参照するとよさそうです。