LinuxWindowsmacOS

Where Does SDKMAN! Store SDKs?

Where SDKMAN! keeps candidates, current versions, and config in ~/.sdkman on Unix systems.

Last updated

SDKMAN! installs into ~/.sdkman: candidates hold every downloaded tool version, with current symlinks selecting the active one. Config lives in etc/config beside them.

The shell init snippet sources sdkman-init.sh from that dir on every prompt. Moving the folder means updating the snippet path too. Archives of past downloads sit in archives/ and are safe to prune for space.

Where SDKMAN! stores this, by platform

Linux
~/.sdkman/

Candidates, archives, tmp, and etc/config. Shell profiles source bin/sdkman-init.sh from here. WSL follows the same Linux layout.

Windows
~/.sdkman/

Same layout (Git Bash, WSL, or Cygwin contexts). Native Windows without a Unix layer is unsupported; use WSL for SDKMAN! there.

macOS
~/.sdkman/

Same layout as Linux. Homebrew Java installs coexist fine; SDKMAN! only manages its own candidates tree.

Frequently asked questions

How do I remove an old SDK version?

Delete the version folder under candidates/<tool>/ for the old release, or run sdk uninstall <tool> <version>. Keep the current/ symlinks alone; SDKMAN! manages those. Config in etc/config holds global defaults.

Can I move SDKMAN! elsewhere?

Set SDKMAN_DIR to the new location before installing, or move ~/.sdkman over and update the init snippet in .bashrc/.zshrc. Per-shell state is minimal, so one move plus a shell restart covers it.

Notice an outdated path? Let us know.