LoginSignup
4
4

More than 3 years have passed since last update.

SDKMAN でインストールした java のバージョンをディレクトリ移動時に切り替える

Posted at

.sdkmanrc を使うと、direnv のようにディレクトリ移動時に SDKMAN でインストールした java, scala などのバージョンを切り替えることができる。
比較的最近追加されたので、利用するには SDKMAN を最新(執筆時点では 5.8.3)にアップデートしておく。

.sdkmanrc を生成

バージョンを指定したいディレクトリで sdk env init を実行する。

$ cd sdkenv-test/
$ sdk env init
.sdkmanrc created.

.sdkmanrc が生成され、次のようになっている。

$ cat .sdkmanrc
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=8.0.202.j9-adpt

設定

生成された .sdkmanrc に使用したいバージョンを指定する。

# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=13.0.2.j9-adpt

~/.sdkman/etc/config で sdkman_auto_env=true に設定する。
sdkman_auto_env=true とすることで direnv のようにディレクトリに移動したときに自動的に切り替わる。

シェルをリスタートする。

$ exec $SHELL -l

実行例

$ cd sdkenv-test/

Using java version 13.0.2.j9-adpt in this shell.

sdkman_auto_env=false の場合は手動で切り替える必要がある

sdkman_auto_env=false に設定されていると、.sdkmanrc のあるディレクトリに移動しても自動では切り替わらない。
sdk env を実行して切り替えないといけない。

$ cd sdkenv-test/
$ java --version
openjdk 14.0.1 2020-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.1+7)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.20.0, JRE 14 Linux amd64-64-Bit Compressed References 20200416_44 (JIT enabled, AOT enabled)
OpenJ9   - 05fa2d361
OMR      - d4365f371
JCL      - 5757187cae based on jdk-14.0.1+7)
$ sdk env

Using java version 13.0.2.j9-adpt in this shell.
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4