環境

・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"

 

利用する上では、このぐらいで十分かなと思います。

インストールしたものを削除したいなどとなったら、

上であげた公式サイトを参照するとよさそうです。