How to change Java version on Windows 10

193,071

Solution 1

java -version is running the wrong version of java.

Diagnostics:

>java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)

the following is the Java related contents from the output of PATH:

PATH=C:\ProgramData\Oracle\Java\javapath; ... C:\Program Files\Java\jdk1.6.0_45\bin

Conclusion:

From the above output we can deduce that C:\ProgramData\Oracle\Java\javapath is 1.8.0_66.

You need to change your PATH to put C:\Program Files\Java\jdk1.6.0_45\bin first.

I noticed that after checking the path per your suggestion. Windows 10 does not allow me to edit the path because it says "This environment variable is too large." I know there should be another question to deal with this separately.

You also need to clean up your path. My guess is you have a lot of duplicate entries.

Solution 2

I have the same problem, I have set JAVA_HOME:

C:\Program Files\Java\jdk1.7.0_75

and Path to:

%JAVA_HOME%\bin

I need run jdk 7. When I run java -version it always appear jdk 8.

I solved it with: in System Environment --> Path --> order %JAVA_HOME%\bin to first.

Solution 3

This is the REAL active JAVA executable into your PATH:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath;

Remove it and the system take the value from

...;%JAVA_HOME%\bin\;

Solution 4

Check also registry. Press Win key-R, type regedit. Search for Computer\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment. If there is something different, than you expect, than it is better to reinstall Java. If it not possible, very carefully change the settings. Be aware, that from version to version the setup can be different. In my case I would to downgrade from Java 1.9 to 1.8.

Java Registry Setup

Solution 5

enter image description here

As you can check the javapath variable under system's environment path variable.

So if you want to use your own version.You can do

  • 1) Create new variable in systems variable
  • 2) Name it as JAVA_HOME and give jdk installation path
  • 3) add this variable in path and move it to top.
  • 4) check java -version

you need to create a JAVA_HOME

Share:
193,071

Related videos on Youtube

Karim Kane
Author by

Karim Kane

Updated on September 18, 2022

Comments

  • Karim Kane
    Karim Kane almost 2 years

    I have done the following:

    1. Set the environment variable JAVA_HOME: enter image description here

    2. Add Java 1.6.0_45 and disable Java 1.8.0_66 in Java Runtime Environment Settings under Configure Java: enter image description here

    Unfortunately, the Java is still 1.8.0_66:

    >java -version
    java version "1.8.0_66"
    Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
    Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)
    

    Could anyone offer a tip on this?

    Edit:

    Per David's suggestion, the following is the Java related contents from the output of command PATH (the entire output is super long, I hope the following is sufficient for this question.):

    PATH=C:\ProgramData\Oracle\Java\javapath; ... C:\Program Files\Java\jdk1.6.0_45\bin
    
    • DavidPostill
      DavidPostill over 8 years
      Please edit and include the output of path in a cmd shell.
    • Karim Kane
      Karim Kane over 8 years
      @DavidPostill I have just done it following your suggestion. Thank you.
    • DavidPostill
      DavidPostill over 8 years
      C:\ProgramData\Oracle\Java\javapath will be 1.8.0_66. Put C:\Program Files\Java\jdk1.6.0_45\bin first.
    • gronostaj
      gronostaj over 8 years
      Note that changes to environment variables may not be fully applied until you sign in again. Reboot and try java -version again.
    • Karim Kane
      Karim Kane over 8 years
      @DavidPostill I noticed that after checking the path per your suggestion. Windows 10 does not allow me to edit the path because it says "This environment variable is too large." I know there should be another question to deal with this separately.
    • Stackcraft_noob
      Stackcraft_noob over 8 years
      Have you tried to put just ´%JAVA_HOME%\bin´ instead ´C:\Program Files\Java\jdk1.6.0_45\bin´
    • DavidPostill
      DavidPostill over 8 years
      @Hong "This environment variable is too large" - you need to clean up your path. My guess is you have a lot of dupe entries.
    • Karim Kane
      Karim Kane over 8 years
      @DavidPostill I managed to delete "C:\ProgramData\Oracle\Java\javapath" and put "%JAVA_HOME%\bin" first. Now Java -version returns "1.6.0_45". The PATH command returns "C:\Program Files\Java\jdk1.6.0_45\bin;" as the first. Could you turn your comment to an Answer so that I can accept and close this question?
    • Karim Kane
      Karim Kane over 8 years
      @Stackcraft_noob ´C:\Program Files\Java\jdk1.6.0_45\bin´ was actually the result of ´%JAVA_HOME%\bin´ that I added to the user (not system) variable PATH. Now I have moved it to the system PATH.
    • Karim Kane
      Karim Kane over 8 years
      @gronostaj I have noticed that I need to restart CMD, not the computer, after changing the environment.
    • CsBalazsHungary
      CsBalazsHungary over 7 years
      @Stackcraft_noob thanks for the tip, for me, the windows didn't want to recognize the ´C:\Program Files\Java\jdk1.6.0_45\bin´, but did accept ´%JAVA_HOME%\bin´
    • Mathew Lionnet
      Mathew Lionnet about 7 years
      I would remove javapath from PATH and add the actual java version directory directly. This allows easy switching without the need to maintain the registry. Note that this is not true for in-Browser Java.
  • naXa stands with Ukraine
    naXa stands with Ukraine over 6 years
    Order changing doesn't help, java -version is always 8. My configuration: Windows 10 with jdk 8 installed alongside jdk 7.
  • DavidPostill
    DavidPostill over 6 years
    @naXa Please ask your own question, supplying the appropriate information.
  • Somnath Sarode
    Somnath Sarode about 6 years
    This answer is correct
  • MGM
    MGM about 5 years
    No, it's not a "REAL" java! It's the oracle's way to redirect the "java.exe", etc. simple executions to the "REAL" java installation, which is specified in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment So this solution is replacing the registry-based indirection (managed by java installers) with the Environment-variable based indirection (managed by theuser). See also: stackoverflow.com/a/51457823/849897
  • Shalika
    Shalika almost 5 years
    This is the correct answer !! Thank you very much !!
  • ponder275
    ponder275 about 4 years
    I had to restart my computer before it worked.
  • asa9ohan
    asa9ohan over 3 years
    After hours of experimenting with the environment variables and the java config settings in VS Code, this finally made it clear what actually determined which version of java was running... thank you
  • Marc Bouvier
    Marc Bouvier over 2 years
    With old java installers a java.exe is often present in c:\Windows\System32 the classic headache!