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
~/.sdkman/
Candidates, archives, tmp, and etc/config. Shell profiles source bin/sdkman-init.sh from here. WSL follows the same Linux layout.
~/.sdkman/
Same layout (Git Bash, WSL, or Cygwin contexts). Native Windows without a Unix layer is unsupported; use WSL for SDKMAN! there.
~/.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.