How to set the environment variables for Java in Windows
java
Solution
Java SE Development Kit 8u112 on a 64-bit Windows 7 or Windows 8
Set the following user environment variables (== environment variables of type user variables)
- `JAVA_HOME :` `C:\Program Files\Java\jdk1.8.0_112`
- `JDK_HOME :` `%JAVA_HOME%`
- `JRE_HOME :` `%JAVA_HOME%\jre`
- `CLASSPATH :` `.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib`
- `PATH :` `your-unique-entries;%JAVA_HOME%\bin` (make sure that the longish `your-unique-entries` does not contain any other references to another Java installation folder.
Note for Windows users on 64-bit systems:
Progra~1 = 'Program Files'
Progra~2 = 'Program Files(x86)'
Notice that these environment variables are derived from the "root" environment variable `JAVA_HOME`. This makes it easy to update your environment variables when updating the JDK. Just point `JAVA_HOME` to the fresh installation.
There is a blogpost explaining the rationale behind all these environment variables.
Optional recommendations
- Add a user environment variable `JAVA_TOOL_OPTIONS` with value `-Dfile.encoding="UTF-8"`. This ensures that Java (and tools such as Maven) will run with a `Charset.defaultCharset()` of `UTF-8` (instead of the default `Windows-1252`). This has saved a lot of headaches when wirking with my own code and that of others, which unfortunately often assume the (sane) default encoding UTF-8.
- When JDK is installed, it adds to the system environment variable `Path` an entry `C:\ProgramData\Oracle\Java\javapath;`. I anecdotally noticed that the links in that directory didn't get updated during an JDK installation update. So it's best to remove `C:\ProgramData\Oracle\Java\javapath;` from the `Path` system environment variable in order to have a consistent environment.
Problem
How to set the environment variables for Java in Windows (the classpath)?