# Java Notes

# CLASSPATH

## CLASSPATH tells Java where to search for programs

Where to look? The Java runtime system needs to know where to find programs that you want to run and libraries that are needed. It knows where the predefined Java packages are, but if you are using additional packages, you must tell specify where they are located.

CLASSPATH. Specifying where to search for additional libraries in Windows is easily done by seeting the environment variable CLASSPATH, which Java uses to see where it should find Java programs and libraries.

Automatic? Some IDEs tell the Java runtime system where to search, and double-clickable Jar (Java Archive) files don't have this problem

When do you need it? If you compile "by hand" (typing `javac` and `java` in a command window), or sometimes with TextPad or other editors.

## Setting CLASSPATH on Windows XP

The CLASSPATH variable can be set on Windows XP with the following steps.

- Click the `Start` button in the lower left of the screen.
- Select `Control Panel` from the pop-up menu.
- Choose `System` from the submenu.
- Click the `Advanced` tab.
- Click the `Environment Variables` button near the bottom and you will see two lists of variables.
- Look in the `System variables` list for a variable named `CLASSPATH`. If you find it, click `Edit`. If you don't find it, click `New` and enter `CLASSPATH` in the `Variable name` field.
- The `Variable value` field is a list of file paths of directories or `jar` files. The first thing in this list should be the current directory, which is represented in windows just as it is in Unix, as a single period. If there's more than one thing in this list, separate items with a semicolon. For example, my CLASSPATH variable starts with these three items (there are a couple more, but this should be enough to give you the idea). The only part you need is the first "dot".

          .;C:\classpath\com.fredswartz.ezgui.jar;c:\classpath\TableLayout.jar;

  I put extra libraries that I want to be searched in a directory named `classpath`, but you can choose any name.

Problems? Setting the CLASSPATH environment variable can make life much more convenient, but it can also create huge problems when testing different versions of programs that are on your classpath.

IDE. Now that I do most of my development using NetBeans, where I can specify which jar files to include, I no longer modify my CLASSPATH variable.

## References

- Managing the Java classpath (Windows) is a good article on managing CLASSPATH.
- A more complete explanation of `CLASSPATH` can be found in Java Glossary : classpath.