Switch JDK version in Windows 10 cmd

26,489

Solution 1

Here's my guide for Windows 10.

Step 1. Go to System Properties. Click on Environment Variables

Step 2. Add new variables, such as JAVA_8_HOME

  • JAVA_8_HOME:%ProgramFiles%\Java\jdk1.8.0_152\bin
  • JAVA_9_HOME:%ProgramFiles%\Java\jdk-9.0.1\bin
  • JAVA_HOME:%JAVA_8_HOME%

In my case, JAVA_8_HOME(JDK8) is pointing to C:\Program Files\Java\jdk1.8.0_152\bin. You can replace this with your own path to javac. %JAVA_HOME% has a default value pointing to JAVA_8_HOME, which is the path for JDK8. That's my preference, feel free to adjust accordingly.

Step 3. Select PATH and click on Edit. PATH

Step 4. Click on New and add %JAVA_HOME%. %JAVA_HOME% will be added to PATH automatically every time you launch a command prompt.


In order to switch JDK version in cmd, here's the trick. Step 5. I created a batch file with

@echo off
:: Switch JDK version
DOSKEY java8=SET PATH=%JAVA_8_HOME%;%PATH%;
DOSKEY java9=SET PATH=%JAVA_9_HOME%;%PATH%

Basically, it disables echo and creates two alias. In batch file any string after :: is the comments. Every time, java8 or java9 is called, it re-exports %PATH% with the new JDK path. Save it as profile.bat. You can name it whatever you want.

Step 6. Search for regedit (Registry Editor). Click on Edit > New > String Value. Give AutoRun as the Value name and %USERPROFILE%\profile.bat as the Value data. Here, please put your actual path value to the profile.bat we just created. So, whenever a command prompt is opened, it automatically loads profile.bat, which creates those two alias in the script.

Step 7. Close any command prompt you're using or just open a new command prompt. This is because your changes will not affect opened cmd window. Environment changes only happens to new CMD.

Step 8. Verify your results here.

If you're using different Python versions, same trick applies, too. Find my python environment settings here.

Solution 2

I created scripts for every version of Java that I have installed on my PC, and use those whenever I need to change the Java version through the command line. Here is an example of one, should be self-explanatory really:

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk-10
echo setting PATH
set PATH=C:\Program Files\Java\jdk-10\bin;%PATH%
echo Display java version
java -version

Solution 3

Create a folder (in my case it is in C:\devenv) and create a batch file and name it after the version (jdk8.bat, jdk9.bat, jdk10.bat, jdk11.bat etc..) then add this commands. You just need to change the set JAVA_HOME to the location of the jdk version. Add the location of the batch files (C:devenv) to the path on the environment variables

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk-11.0.9
set PATH=%JAVA_HOME%\bin;%PATH%
@echo Display Java Version
java -version

You can run it on cmd by just typing the batch name (e.g jdk11)

Solution 4

Found a single batch file to be a simpler solution. Adding batch file location path to system environmental variables will allow you to execute it from cmd.

Batch file (javaVer.bat):

@echo off
echo.

IF "%1" == ""       GOTO NoParams
IF "%1" == "8"      GOTO J8
IF "%1" == "11"     GOTO J11
IF "%1" == "latest" GOTO latest

IF "%1" == "-h"         GOTO help
IF "%1" == "--help"     GOTO help

:NoParams
    echo Enter Java version
    GOTO options
    
:help
    echo Usage: javaVer [java version]
    GOTO options

:: available java versions
:options
    echo options: 8, 11, latest.
    GOTO exit

:: java 8
:J8
    set JAVA_HOME=C:\Program Files\Java\jdk8u282-b08
    GOTO activate

:: java 11
:J11
    set JAVA_HOME=C:\Program Files\Java\jdk-11.0.10+9
    GOTO activate

:: latest java version
:latest
    set JAVA_HOME=C:\Program Files\Java\jdk-15.0.2+7
    GOTO activate

:: activates the selected java version
:activate
    set Path=%JAVA_HOME%\bin;%Path%
    echo Java %1 activated.
    GOTO exit

:: prints java version
:exit
    echo.
    echo Current Java version:
    java -version

Usage: javaVer [java version]

exp: javaVer 8

Share:
26,489
Ku Zijie
Author by

Ku Zijie

BY DAY: Software Engineer FOR FUN: Fintech. "Be like a postage stamp. Stick to one thing until you get there." - Josh Billings

Updated on July 09, 2022

Comments

  • Ku Zijie
    Ku Zijie almost 2 years

    Is there a way to change JDK version easily in cmd? like the version on mac. Change Default JDK on Mac.

  • Ku Zijie
    Ku Zijie over 6 years
    This is not a permanent. Every time, a CMD is launched. It already loads your path. So, without having JAVA_HOME value set, you will get something like..;%JAVA_HOME%\bin;.. in your PATH. Also, there's too many typing. If you look at mac version closely, I just have to type j8 to switch to JDK 8.