移动目录时切换由SDKMAN安装的Java版本


移动目录如direnv时,可以使用

.sdkmanrc切换由SDKMAN安装的Java,scala等版本。
它是在最近才添加的,因此请将SDKMAN更新到最新版本(在撰写本文时为5.8.3)以使用它。

产生.sdkmanrc

在要指定版本的目录中运行sdk env init

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

.sdkmanrc生成,如下所示:

1
2
3
4
$ 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的版本。

1
2
3
# 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之类的目录时,它将自动切换。

重新启动外壳。

1
$ exec $SHELL -l

执行示例

1
2
3
$ 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进行切换。

1
2
3
4
5
6
7
8
9
10
11
$ 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.