How to set environment variables in Windows 7 for Java

Environmental variables are used by the operating system to save settings (default values, locations of resources) to be used by Windows or by processes launched by users.
There are two types of environmental variables:

  • user variables that are specific to a particular Windows user account;
  • system variables are always visible, regardless of the used user account.

Even if these variables are usually defined and initialized automatically when you install the system or other applications, there are situations in which the user must manually define them to put at the disposal of applications.
The considered scenario is to set environment variables to enable the compilation and execution of Java applications from the command line (command prompt) or by using an IDE like Eclipse. By installing the Java SDK, system variables about the location of executables (compiler, java virtual machine) are not defined or initialized automatically.
Testing is done by opening command prompt (Start -> cmd) and trying to launch the compiler with the command

C:\Users\Catalin>javac.exe

If there is no system variable to indicate where to look for the this executable, the system will give an error like:

'javac' is not recognized as an internal or external command,
operable program or batch file.

The solution to this problem is given by setting the system variables: JAVA_HOME, PATH and CLASSPATH:

  1. Open the Control Panel -> System or Security โ€“> System; the same thing can be done by right-clicking on MyComputer and choosing Properties
System window in Windows 7
System window in Windows 7


2.   Choose Advanced System Settings option

System properties window in Windows
System properties window in Windows


3.   Choose the Environment Variables option

Environment variables in Windows
Environment variables in Windows


4.   In the System variables section it is selected New

5.   Define the variable name, JAVA_HOME and its value C:\Program Files\Java\jdk1.6.0_16 (for this example JDK version 1.6.0 was installed in C:\Program Files\Java\jdk1.6.0_16 folder; if needed, modify this value to reflect the real situation)

6. Insert a new system variable named, CLASSPATH and its value %JAVA_HOME%\jre\lib

New system variable
New system variable


7. For PATH, if it already exists, select it and choose the Edit option; in the editor add the value;%JAVA_HOME%\bin (the new values are separated by a semicolon from the existing ones)

Testing the system variables is done by opening a new command prompt window (Start -> cmd) and trying to launch the compiler with the command:

C:\Users\Catalin>javac
Usage: javac
where possible options include:
  -g                         Generate all debugging info
...

or, by using next commands

C:\Users\Catalin>echo %CLASSPATH%
C:\Program Files\Java\jdk1.6.0_16\jre\lib

C:\Users\Catalin>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_16

C:\Users\Catalin>echo %PATH%

8. Restart the computer in order to make your system aware of these changes (thanks to Ike for reminding me)

Author: Catalin B.
For more info, got to About section.

27 thoughts on “How to set environment variables in Windows 7 for Java

  1. You forgot to say that you need to RESTRART the computer to invoke the changes.

    After restarting my PC more than half an hour, I found out that you only need to have ‘bin folder’ variable:
    PATH = C:\Program Files (x86)\Java\jdk1.6.0_26\bin

    Only when I deleted the other two, javac compiler started working, and I could execute HelloWorld.class afterwards.

    1. Hi Ike,

      Thank you for reminding me about the restart. I have updated the post.
      What do you mean about deleting the other 2 lines ? These two JAVA_HOME and CLASSPATH.
      If this is the case, be aware that for more complex examples than HelloWorld you need classes from the Java framework which are placed in the % JAVA_HOME%\jre\lib.
      You can skip JAVA_HOME variable because it is just an alias for the full path of the Java folder. In the CLASSPATH variable just replace %JAVA_HOME% with the path.

  2. just add the path to the bin directory in the java folder separated by “;” e.g. C:\Program Files (x86)\Java\jre6\bin and then restart the system.

  3. After messing with those for an hour and a half trying other solutions this one worked perfectly. Excellent article, thank you so much.

    1. Hi Chhaya,

      Please verify if the class name is identical with the file name. Java is a case sensitive language.
      Also, have you compiled the .java file withe the javac.exe compiler into the bytecode file, .class ?

  4. each time I compile hear is what I get; javac:file not found:Helloworld
    usage:javac
    use -help for a list of possible options.
    this happens to any program i try to compile,and the path and class path is set correctly

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.