
Java開発環境をモダンに管理するSDKMANコマンドの全体像
「コマンドラインツールはちょっと苦手で…」と感じる方もいるかもしれません。
しかし、ご安心ください!SDKMANのコマンドは非常に直感的で、一度覚えてしまえば、開発環境管理は効率的になります。
SDKの検索、インストール、バージョン切り替え、そして不要なSDKの削除まで、スムーズに実行できます。
この記事では、SDKMANの基本コマンドから応用テクニックまで、各コマンドを実践的に解説します。
インストール、バージョン切り替え、プロジェクト管理を効率化し、モダンな開発フローを実現する内容となっています。
この記事を都度参照しながら、SDKMANの主要コマンドを使って、複数のJavaバージョンやビルドツールをプロジェクトに合わせてバージョン管理を効率的に実施しましょう!
目次
- SDKを探す・一覧表示する (
list) - SDKをインストール/アンインストールする (
install,uninstall) - SDKのバージョンを切り替える (
use,default,current) - プロジェクトごとのSDK管理 (
sdk env) - その他の便利なコマンド
- まとめ:コマンドを使いこなし、バージョン管理を自在に
対象読者
- SDKMAN! の基本的なインストールが完了し、主要なコマンドの使い方を学びたい方
- Java、Maven、GradleなどのSDKのインストール、バージョン切り替え、アンインストール方法を知りたい方
- SDKMAN! を使った効率的な開発環境管理に興味がある方
動作検証環境
この記事は、以下の環境で検証しています。
- OS : macOS Tahoe Version 26.0
- ハードウェア : MacBook Air 2024 M3 24GB
- Multipass : Multipass version 1.16.1
- Ubuntu : 24.0.4.0.2
関連記事
SDKMANのインストールについては、以下の記事で詳細に解説していますので、是非ご覧ください。
1. SDKを探す・一覧表示する (list)
SDKMANを使いこなす第一歩は、利用可能なSDKを知ることから始まります。sdk list コマンドは、インストール可能なSDKの一覧や、現在インストールされているSDKの情報を表示する便利なコマンドです。
インストール可能な全SDKを表示
SDKMANが管理できるすべてのSDKを表示するには、引数なしで sdk list を実行します。
sdk listこのコマンドを実行すると、Java、Maven、Gradle、Kotlinなど、SDKMANがサポートする多数のSDKとそのバージョンが一覧表示されます。
以下は sdk list コマンドの実行結果の例です。
================================================================================
Available Candidates
================================================================================
q-quit /-search down
j-down ?-search up
k-up h-help
--------------------------------------------------------------------------------
...
--------------------------------------------------------------------------------
Java (25.0.1-tem) https://projects.eclipse.org/projects/adoptium.temurin/
Java Platform, Standard Edition (or Java SE) is a widely used platform for
development and deployment of portable code for desktop and server environments.
Java SE uses the object-oriented Java programming language. It is part of the
Java software-platform family. Java SE defines a wide range of general-purpose
APIs – such as Java APIs for the Java Class Library – and also includes the Java
Language Specification and the Java Virtual Machine Specification.
$ sdk install java
...特定のSDK(Javaなど)のバージョン一覧
「Javaの特定のバージョンだけ知りたい」「Gradleの最新版は何だろう?」といった場合は、sdk list <sdk_name> の形式でコマンドを実行します。例えば、Javaのバージョン一覧を見たい場合は以下のようになります。
sdk list javaこれにより、利用可能なJavaのバージョンがベンダー(AdoptOpenJDK, OpenJDKなど)ごとに整理されて表示されます。必要なバージョンを見つけるのに非常に役立ちます。
以下は sdk list java コマンドの実行結果の例です。
================================================================================
Available Java Versions for Linux ARM 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 25.0.1 | amzn | | 25.0.1-amzn
| | 25 | amzn | | 25-amzn
| | 24.0.2 | amzn | | 24.0.2-amzn
| | 21.0.9 | amzn | | 21.0.9-amzn
| | 17.0.17 | amzn | | 17.0.17-amzn
| | 11.0.29 | amzn | | 11.0.29-amzn
| | 8.0.472 | amzn | | 8.0.472-amzn
Temurin | | 25 | tem | | 25-tem
| | 24.0.2 | tem | | 24.0.2-tem
| | 23.0.2 | tem | | 23.0.2-tem
| | 21.0.8 | tem | | 21.0.8-tem
| | 17.0.17 | tem | | 17.0.17-tem
| | 11.0.28 | tem | | 11.0.28-tem
| | 8.0.462 | tem | | 8.0.462-temインストール済みSDKの確認
すでにインストール済みのSDKを確認したい場合は、sdk list の出力で installed と表示されている行を探すか、より簡潔に sdk current コマンドを使用します。
sdk currentこのコマンドは、現在アクティブになっているSDKのバージョンを表示します。
以下は sdk current コマンドの実行結果の例です。
================================================================================
Installed SDKs
================================================================================
java
* 17.0.9-tem
maven
* 3.8.6
gradle
* 8.5
================================================================================2. SDKをインストール/アンインストールする (install, uninstall)
目的のSDKが見つかったら、次は実際にインストールしてみましょう。SDKMANを使えば、SDKのインストールも簡単です。
最新安定版をインストール
特定のSDKの最新安定版をインストールするには、sdk install <sdk_name> を実行します。例えば、最新のJavaをインストールしたい場合は、以下のようになります。
sdk install javaこれにより、SDKMANが自動的に最新の安定版Javaをダウンロードし、インストールしてくれます。
ただし、環境によっては sdk install <sdk_name> で最新安定版をインストールしようとした際に、以下のようなエラーが発生する場合があります。
ubuntu @my-dev-vm:~$ sdk install java
Stop! java 25.0.1-tem is not available. Possible causes:
* 25.0.1-tem is an invalid version
* java binaries are incompatible with your platform
* java has not been released yet
Tip: see all available versions for your platform:
$ sdk list javaこれは、お使いのプラットフォームとSDKのバイナリが互換性がない場合や、指定したバージョンが利用できない場合に発生します。この場合は、sdk list <sdk_name> コマンドで自身のプラットフォームで利用可能なバージョンを確認し、バージョンを指定してインストールする必要があります。
例えば、sdk list java で 25-tem が利用可能と表示された場合、以下のようにバージョンを指定してインストールします。
sdk install java 25-temubuntu @my-dev-vm:~$ sdk install java 25-tem
Downloading: java 25-tem
In progress...
################################################################################################################# 100.0%
Repackaging Java 25-tem...
Done repackaging...
Installing: java 25-tem
Done installing!
Setting java 25-tem as default.このように、sdk list <sdk_name> で表示される Identifier を正確に指定することが重要です。
以下は sdk install java コマンドの実行結果の例です。
Downloading: java 25-tem
In progress...
Installing: java 25-tem
Done installing!
Setting java 25-tem as default.バージョンを指定してインストール
「プロジェクトでJava 17を使いたい」「Maven 3.9.11が必要だ」といった場合は、バージョンを指定してインストールできます。
sdk install maven 3.9.11以下は sdk install maven 3.9.11 コマンドの実行結果の例です。
Downloading: maven 3.9.11
In progress...
Installing: maven 3.9.11
Done installing!
Setting maven 3.9.11 as default.バージョン指定は、ベンダー名を含む完全なバージョン文字列で行うのが確実です。sdk list maven などで表示されるバージョン文字列をコピー&ペーストするのがおすすめです。
不要になったバージョンを削除
開発を進めていると、古いSDKバージョンが不要になることもあります。そんな時は sdk uninstall <sdk_name> <version> で簡単に削除できます。
sdk uninstall java 17.0.12-oracle以下は sdk uninstall java 17.0.12-oracle コマンドの実行結果の例です。
Uninstalling java 17.0.12-oracle...
Successfully uninstalled java 17.0.12-oracleこれにより、ディスクスペースを節約し、環境をクリーンに保つことができます。
3. SDKのバージョンを切り替える (use, default, current)
SDKMANの主要な機能の一つが、SDKバージョンの柔軟な切り替えです。プロジェクトやタスクに応じて、最適なSDKバージョンを瞬時に適用できます。
現在のシェルだけで一時的に切り替える (use)
「このターミナルセッションだけJava 21を使いたい」といった一時的な切り替えには sdk use <sdk_name> <version> が便利です。
sdk use java 21.0.9-graal以下は sdk use java 21.0.9-graal コマンドの実行結果の例です。
Using java 21.0.9-graal in this shell.このコマンドは、現在のシェルセッションにのみ影響し、新しいシェルを開けば元のデフォルトバージョンに戻ります。ちょっとしたテストや、特定のプロジェクトでのみ一時的に異なるバージョンを使いたい場合に最適です。
デフォルトバージョンを恒久的に設定する (default)
システム全体、または新しいシェルセッションで常に特定のSDKバージョンを使いたい場合は sdk default <sdk_name> <version> を使用します。
sdk default java 17.0.17-tem以下は sdk default java 17.0.17-tem コマンドの実行結果の例です。
Default java version set to 17.0.17-temこれにより、以降に開くすべてのシェルで、指定したバージョンがデフォルトとして適用されます。
現在使用中のバージョンを確認する (current)
現在どのSDKバージョンがアクティブになっているかを確認するには、sdk current <sdk_name> を実行します。
sdk current java以下は sdk current java コマンドの実行結果の例です。
Using java version 17.0.17-temこれは、特に複数のSDKバージョンを頻繁に切り替える際に、現在の環境を把握するために役立ちます。
JAVA_HOMEの自動管理
Java開発者にとって、JAVA_HOME環境変数の管理は課題の一つでした。SDKの切り替え時に手動での設定変更や、設定ミスによるビルド失敗が発生することがあります。SDKMAN!は、このJAVA_HOMEの管理を自動化します。
SDKMAN!でSDKを切り替えると、自動的にJAVA_HOMEが適切なパスに設定されます。これにより、あなたは環境変数のことを意識することなく、開発に集中できます。
# Java 17に切り替えた後
echo $JAVA_HOME
# 出力例: /Users/yourname/.sdkman/candidates/java/17.0.17-temこれにより、環境変数を意識することなく開発に集中できます。
さらに、sdk env コマンドと組み合わせることで、プロジェクトディレクトリに移動するだけで自動的に適切な JAVA_HOME が設定されるようになり、よりシームレスな開発体験が実現します。
4. プロジェクトごとのSDK管理 (sdk env)
プロジェクトごとに特定のSDKバージョンを使用したい場合、.sdkmanrc ファイルを活用できます。このファイルはプロジェクトのベースディレクトリに配置します。
.sdkmanrc ファイルの初期化
現在のディレクトリに .sdkmanrc ファイルを自動生成するには、以下のコマンドを実行します。
sdk env init生成されたファイルには、現在使用中のJDKバージョンが事前に入力されていますが、必要に応じて他のSDKのキーと値のペアを追加できます。
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=21.0.4-tem.sdkmanrc の設定を適用する
.sdkmanrc ファイルに記述された設定を現在のシェルに適用するには、以下のコマンドを実行します。
sdk env以下は sdk env コマンドの実行結果の例です。
Using java version 21.0.8-tem in this shell.これにより、現在のシェルで指定されたSDKバージョンが使用されるようになります。
.sdkmanrc の設定をクリアする
プロジェクトを離れる際に、SDKの設定をデフォルトバージョンに戻したい場合は、以下のコマンドを使用します。
sdk env clear以下は sdk env clear コマンドの実行結果の例です。
SDKMAN environment cleared.不足しているSDKをインストールする
新しいプロジェクトをチェックアウトした際に、.sdkmanrc ファイルで指定されているSDKが不足している場合があります。その場合は、以下のコマンドで不足しているSDKをインストールできます。
sdk env install以下は sdk env install コマンドの実行結果の例です。
Installing java 21.0.8-tem...
Done installing!ディレクトリ移動時の自動切り替え
ディレクトリに cd する際にSDKバージョンを自動的に切り替えたい場合は、SDKMANの設定ファイル (~/.sdkman/etc/config) で sdkman_auto_env=true を設定します。これにより、ディレクトリを離れる際にプロジェクト固有のSDKがデフォルトバージョンにリセットされます。
5. その他の便利なコマンド
SDKMAN!には、上記以外にも開発環境管理に役立つ様々なコマンドがあります。
SDKMAN!のバージョン表示 (sdk version)
SDKMAN!自身のスクリプトとネイティブのバージョンを表示します。
sdk version以下は sdk version コマンドの実行結果の例です。
SDKMAN!
script: 5.20.0
native: 0.7.14 (linux aarch64)オフラインモードの切り替え (sdk offline)
インターネット接続がない環境でSDKMAN!を使用するためのオフラインモードを有効/無効にします。
sdk offline enable以下は sdk offline enable コマンドの実行結果の例です。
Offline mode enabled.sdk offline disable以下は sdk offline disable コマンドの実行結果の例です。
Offline mode disabled.オフラインモードでは、sdk list コマンドはインストール済みのSDKバージョンのみを表示します。
SDKMAN!自体の更新 (sdk selfupdate)
SDKMAN!の新しいバージョンが利用可能な場合に、SDKMAN自体を更新します。強制的に再インストールすることも可能です。
sdk selfupdate以下は sdk selfupdate コマンドの実行結果の例です。
No update available at this time.sdk selfupdate force以下は sdk selfupdate force コマンドの実行結果の例です。
Forcing selfupdate...
SDKMAN is up to date.候補の更新 (sdk update)
新しいSDK候補や削除された候補をSDKMAN!が認識するために、定期的にキャッシュを更新する必要があります。
sdk update以下は sdk update コマンドの実行結果の例です。
Updating SDKMAN...
Installing script cli archive...
...
Successfully upgraded SDKMAN!
Open a new terminal to start using SDKMAN 5.20.0.
To join our BETA channel, simply follow the instructions on:
http://sdkman.io/install
Enjoy!!!キャッシュのクリア (sdk flush)
SDKMAN!のローカル状態をクリアします。~/.sdkman/tmp などのディレクトリを手動で削除するのではなく、このコマンドを使用してください。
sdk flush以下は sdk flush コマンドの実行結果の例です。
0 archive(s) flushed, freeing 4.0K /home/ubuntu/.sdkman/tmp.
1 archive(s) flushed, freeing 4.0K /home/ubuntu/.sdkman/var/metadata.SDKのホームディレクトリ表示 (sdk home)
特定のSDKの絶対パスを表示します。スクリプトなどでSDKのパスが必要な場合に便利です。
sdk home java 25-tem以下は sdk home java 21.0.4-tem コマンドの実行結果の例です。
/home/ubuntu/.sdkman/candidates/java/25-temヘルプの表示 (sdk help)
SDKMAN!の基本的なヘルプ情報を表示します。特定のサブコマンドのヘルプも参照できます。
sdk help以下は sdk help コマンドの実行結果の例です。
NAME
_sdk_ - The command line interface (CLI) for SDKMAN!
SYNOPSIS
_sdk <subcommand> [candidate] [version]_
DESCRIPTION
SDKMAN! is a tool for managing parallel versions of multiple JVM related
Software Development Kits on most Unix based systems. It provides a
convenient Command Line Interface (CLI) and API for installing, switching,
removing and listing Candidates.
SUBCOMMANDS & QUALIFIERS
help _[subcommand]_
install _<candidate> [version] [path]_
uninstall _<candidate> <version>_
list _[candidate]_
...sdk help install以下は sdk help install コマンドの実行結果の例です。
Usage: sdk install <candidate> [version]
Installs a candidate version. If no version is provided, the latest stable version is installed.設定の編集 (sdk config)
SDKMAN!の設定ファイル (~/.sdkman/etc/config) をシステムエディタで開きます。
sdk configまとめ:コマンドを使いこなし、バージョン管理を自在に
今回は、SDKMANの基本的なコマンドである list、install、uninstall、use、default、current について詳しく解説しました。
これらのコマンドをマスターすることで、あなたはJava開発環境のバージョン管理から解放され、より本質的な開発作業に集中できるようになるでしょう。
特に use と default の使い分けは、SDKMANを効果的に活用する上で非常に重要です。
一時的な切り替えと恒久的な設定を意識することで、あなたの開発ワークフローは格段にスムーズになります。
あなたのチームではどんなバージョン管理ツールを使っていますか?他に便利なカスタマイズがあればぜひコメントで教えてください!
免責事項
本記事の内容は、執筆時点での情報に基づいており、SDKMAN! および関連技術の将来の変更によって、内容が古くなる可能性があります。
また、本記事は特定の環境での動作検証に基づいており、すべての環境での動作を保証するものではありません。
記事の内容を参考に作業を行う際は、ご自身の責任において実施してください。
本記事の情報を利用したことにより生じた損害について、筆者および公開元は一切の責任を負いません。





