Windows ignores JAVA_HOME: how to set JDK as default?
Windows doesn't ignore anything. This is an issue with your setup; Windows just uses what you provide. It has no special knowledge of JAVA_HOME
.
CLASSPATH
has nothing to do with Windows, either. To Windows it's only an environmental variable that gets expanded to a folder location.
Check your %PATH%
environmental variable. It's what's making Windows find one before the other. The path (as the post you linked to said) should point to %JAVA_HOME%\bin;<remainder of path>
. Again, the post you linked to gave you a way to set this using a batch file.
(For others who might not know this: The easiest way to inspect the %PATH% is to open a command prompt and type echo %PATH%
. You can also get there by right-clicking on Computer
in the right pane of the Start Menu and choosing Properties
, then Advanced System Settings
, and the tne Environmental Variables
button.)
On Windows, the same java
executable can load DLLs for different versions of Java. It looks at the directory from which it's running to see if it contains libraries for a particular version of Java. If not, it uses the Windows Registry to locate the default version of Java for the system.
The Java installer will put a copy of java.exe
(but no libraries) in the the Windows\system32 C:\Program Files (x86)\Common Files\Oracle\Java\javapath
directory, and add that directory to the beginning of the PATH
variable.
If you don't use a full path, the copy of java.exe
to run is found by using the PATH
system variable. Since this directory doesn't contain the DLLs of a particular Java runtime version, one is located one by looking at the registry.
So, you either need to modify the registry, or replace the javapath
entry with the version of Java you want in your PATH
system (not user) variable.
I have this issue too. I am running 1.6 but want to build the code I'm working on with 1.5. I've changed the JAVA_HOME
and PATH
(both user and system) to no avail.
The answer is that the installer for 1.6 dropped java.exe
, javaw.exe
, and javaws.exe
into my Windows\System32
folder (Windows 7).
I solved it by renaming those files to java_wrong.exe
, javaw_wrong.exe
, and javaws_wrong.exe
. Only after doing that does it pick up the correct version of java as defined in JAVA_HOME
and PATH
. I renamed the files thusly because that deleted them in an easily reversible manner.
Hope this helps!
In Windows 8, you may want to remove
C:\ProgramData\Oracle\Java\javapath
directory.
from path
It solved my issue.