The Java Version Manager for Windows is designed to accommodate both casual developers and hardcore CI/CD engineers. It acts as both a visually guided Interactive TUI (Terminal User Interface) and a deeply powerful, highly-configurable Headless CLI.
This document outlines every command, flag override, and semantic route available in the engine.
For the easiest, most visually appealing experience, you can rely entirely on the interactive menus.
To launch the main hub, simply run the tool from any terminal without arguments:
jvmYou can also launch it directly from:
- Windows Terminal: Click the
+dropdown menu and select Java Version Manager. - Start Menu: Search for Java Version Manager and press Enter.
- Taskbar: Click the pinned DiamTek JVM icon.
From here, you can visually explore installed JDKs, fetch new versions, manage ecosystem tools, and change global settings. Exiting the menu automatically closes the dedicated terminal tab.
Initial Setup Note:
If you have just downloaded the script manually, navigate to Settings (Global Command & Setup) (Option 3) and select Install Global Command (Option 1). Once installed globally, you can use the jvm command from anywhere on your system.
You do not need to open the menu to change your active Java version. You can instantly update your JAVA_HOME and system PATH directly from the command line.
Switch to a specific version globally:
jvm 21Note: If there are multiple vendors installed for JDK 21 (e.g., Oracle and Adoptium), the engine will safely pause and prompt you to pick a vendor.
You don't need to memorize exact build numbers. You can speak to the tool semantically, and it will dynamically resolve the highest installed version that matches your request:
jvm latest
jvm ltsYou can chain flags to bypass prompts or override your global Settings for a single command.
Override the vendor prompt to silently select Adoptium:
jvm 21 --vendor adoptiumForce the engine to use Symlink Mode (UAC-Free Directory Junctions) for this specific switch, ignoring your saved default architecture:
jvm 21 --symlinkForce the engine to use Legacy Registry Mode (Requests Administrator UAC elevation) for this specific switch:
jvm 21 --legacySemantic routing combined with a vendor override (switches to the newest installed Amazon Corretto LTS version):
jvm lts --vendor correttoIf you only want to change the Java version for your current terminal window (without permanently altering your global Windows Registry or affecting background services), use the session flag:
jvm 21 --session(Note: This feature requires the PowerShell Profile hook to be installed via the Settings menu).
The installation engine supports deep headless automation, allowing you to bypass menus incrementally—perfect for DevOps scripts and automated machine provisioning.
Open the Installation Wizard UI:
jvm installInitiate the installation of JDK 21 (the engine will pause to prompt you for your preferred Vendor):
jvm install 21Prompts you to pick an LTS version (e.g., 17, 21, 25) and then prompts you for your preferred Vendor:
jvm install ltsLocks onto the highest available LTS version, but still pauses to ask which Vendor you want:
jvm install lts --latestBypass all prompts to silently download and install Oracle JDK 21:
jvm install 21 --vendor oracleSilently resolve, download, and install the absolute newest Oracle LTS version without a single prompt:
jvm install lts --latest --vendor oracleThe Aggressive Override (-y / --yes)
If you are running in a strict CI/CD pipeline, you can pass -y to aggressively bypass any remaining interactive safety warnings (such as Oracle's legacy version caps, or "already installed" overwrite warnings) for 100% uninterrupted automation:
jvm install 17 --vendor oracle -yJVM supports downloading, switching, and managing modern build tools natively alongside Java. You can manage these via the command line or through the interactive Ecosystem Management sub-menu.
Install the absolute newest version of Maven directly from Apache:
jvm install maven latestInstall a specific legacy version of Gradle:
jvm install gradle 8.9Instantly switch your active KOTLIN_HOME (and system PATH) to the specified version:
jvm kotlin 2.0.20Safely uninstall a specific tool and cleanly scrub its environment variables from your registry:
jvm uninstall groovy 4.0.23Open the dynamic, vendor-sorted Updater menu UI:
jvm updateBulk Updating: Silently check and automatically patch all installed JDKs and Ecosystem Tools (Maven, Gradle, etc.) to their absolute newest releases:
jvm update --allSilently check and automatically patch only your installed Oracle JDKs:
jvm update --all --vendor oracleOpen the dynamic, vendor-sorted Uninstaller menu UI:
jvm uninstallHeadless uninstallation for JDK 21. If multiple vendors are found for the same version, it safely pauses to ask you which vendor you want to remove:
jvm uninstall 21100% headless uninstallation specifically targeting the Oracle vendor (bypasses all prompts):
jvm uninstall 21 --vendor oracleInstantly configure a project's required environment by simply running the tool inside any directory containing a .java-version or SDKMAN .sdkmanrc file.
Silently parse the file and auto-switch to that version locally for the current terminal only:
jvmParse the file and force the version switch to apply globally to your system registry:
jvm --globalYour .java-version file can specify a standard build number:
21
It can also contain advanced inline CLI flags to lock specific vendors or architecture modes on a strict per-project basis. Make sure the version and flags are all on a single line:
21 --vendor adoptium --legacy
If you are collaborating with developers on Linux/macOS, this tool natively reads their .sdkmanrc files. It dynamically maps SDKMAN vendor strings (like 17-tem or 21-amzn) to your native Windows JDKs and isolates all required ecosystem tools for that session.
java=21-tem
maven=3.9.6
gradle=8.5
kotlin=1.9.22List all installed JDKs with their version, vendor, and path. The currently active JDK is highlighted with [ACTIVE]. (Scroll to the bottom to see installed Ecosystem tools).
jvm listDisplay the exact path your current JAVA_HOME environment variable is pointing to:
jvm envInstantly wipe JAVA_HOME and purge Java from your Windows PATH entirely:
jvm clearManually link an existing, custom JDK directory (or GraalVM native image) into the manager. Linked JDKs automatically integrate into the interactive UI under the "Custom (Local Links)" category:
jvm link C:\my-custom-jdk my-jdkRemove a custom linked JDK from the manager:
jvm unlink my-jdkDisplay your current jvm.bat build number and compare it against the latest release on GitHub to check for engine updates:
jvm versionAutomatically download and atomic-swap the core jvm.bat script if a newer version is available on GitHub:
jvm self-updateLaunch the deep uninstallation process directly from the CLI to wipe JVM, environment variables, AppData caches, and installed tools:
jvm self-uninstallDisplay the full command-line reference, arguments, and flag overrides directly in your terminal:
jvm --help
# Or: jvm help, jvm -h, jvm /?