Is there a way to change JDK version easily in cmd? like the version on mac. Change Default JDK on Mac.
In "System Properties" window, click “Environment Variables…” and select PATH
by click on Edit, then "New" and type ;%JAVA_HOME%\bin
It will write the JAVA_HOME
defined. Just to edit one time.
And after you define JAVA_HOME
by the cmd commande : set JAVA_HOME = path_of_jdk_or_jre
whenever you want.
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
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.
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)