When programming in Java, you make other classes available to the class you are writing by putting something like this at the top of your source file:

import org.javaguy.coolframework.MyClass;

Or sometimes you 'bulk import' stuff by saying:

import org.javaguy.coolframework.*;

So later in your program when you say:

MyClass mine = new MyClass();

The Java Virtual Machine will know where to find your compiled class.

It would be impractical to have the VM look through every folder on your machine, so you have to provide the VM a list of places to look. This is done by putting folder and jar files on your classpath.

Before we talk about how the classpath is set, let's talk about .class files, packages, and .jar files.

First, let's suppose that MyClass is something you built as part of your project, and it is in a directory in your project called output. The .class file would be at output/org/javaguy/coolframework/MyClass.class (along with every other file in that package). In order to get to that file, your path would simply need to contain the folder 'output', not the whole package structure, since your import statement provides all that information to the VM.

Now let's suppose that you bundle CoolFramework up into a .jar file, and put that CoolFramework.jar into a lib directory in your project. You would now need to put lib/CoolFramework.jar into your classpath. The VM will look inside the jar file for the org/javaguy/coolframework part, and find your class.

So, classpaths contain:

  • JAR files, and
  • Paths to the top of package hierarchies.

How do you set your classpath?

The first way everyone seems to learn is with environment variables. On a unix machine, you can say something like:

export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/

On a Windows machine you have to go to your environment settings and either add or modify the value that is already there.

The second way is to use the -cp parameter when starting Java, like this:

java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/"  MyMainClass

A variant of this is the third way which is often done with a .sh or .bat file that calculates the classpath and passes it to Java via the -cp parameter.

There is a "gotcha" with all of the above. On most systems (Linux, Mac OS, UNIX, etc) the colon character (:) is the classpath separator. On Windows the separator is the semicolon (;)

So what's the best way to do it?

Setting stuff globally via environment variables is bad, generally for the same kinds of reasons that global variables are bad. You change the CLASSPATH environment variable so one program works, and you end up breaking another program.

The -cp is the way to go. I generally make sure my CLASSPATH environment variable is an empty string where I develop, whenever possible, so that I avoid global classpath issues (some tools aren't happy when the global classpath is empty though - I know of two common, mega-thousand dollar licensed J2EE and Java servers that have this kind of issue with their command-line tools).

Answer from bokmann on Stack Overflow
🌐
Tutego
tutego.de › blog › javainsel › 2015 › 12 › setzen-java-klassenpfad-cp-classpath
Setzen des Java Klassenpfades | Java Blog für Programmierer
December 19, 2015 - Eine Alternative zum Schalter -cp ist das Setzen der Umgebungsvariablen CLASSPATH mit einer Zeichenfolge, die Pfadangaben spezifiziert: $ SET CLASSPATH=classpath1;classpath2 $ java MainClass
🌐
GeeksforGeeks
geeksforgeeks.org › java › how-to-set-classpath-in-java
How to Set Classpath in Java? - GeeksforGeeks
July 23, 2025 - Note: Colon (:) is used as a separate directory and dot (.) is the default value of CLASSPATH in the above command. ... The PATH variable is used to specify the location of the Java binaries (e.g., java, javac).
Discussions

Classpath per Java Programm setzen
Hi, ich hätte mal ne wichtige Frage: Es geht darum, dass ich für Meinen Media Player bereits sehr viele Klassen habe die ich alle in verschieden .jar Archieve reingeben möchte. Leider Funktionieren dann die import Befehle in den Klassen nicht mehr, da anscheined der ClassPath nicht gesetzt... More on java-forum.org
🌐 java-forum.org
9
June 28, 2005
Classpath anlegen
Mit welcher IDE/etc. entwickelst du denn? Nebenbei gesagt, wenn man den Classpath nicht setzen kann, sollte man sich imho erst in die Grundlagen einlesen bevor man anfängt mit RDBMS & Java zu arbeiten. More on java-forum.org
🌐 java-forum.org
6
August 28, 2012

When programming in Java, you make other classes available to the class you are writing by putting something like this at the top of your source file:

import org.javaguy.coolframework.MyClass;

Or sometimes you 'bulk import' stuff by saying:

import org.javaguy.coolframework.*;

So later in your program when you say:

MyClass mine = new MyClass();

The Java Virtual Machine will know where to find your compiled class.

It would be impractical to have the VM look through every folder on your machine, so you have to provide the VM a list of places to look. This is done by putting folder and jar files on your classpath.

Before we talk about how the classpath is set, let's talk about .class files, packages, and .jar files.

First, let's suppose that MyClass is something you built as part of your project, and it is in a directory in your project called output. The .class file would be at output/org/javaguy/coolframework/MyClass.class (along with every other file in that package). In order to get to that file, your path would simply need to contain the folder 'output', not the whole package structure, since your import statement provides all that information to the VM.

Now let's suppose that you bundle CoolFramework up into a .jar file, and put that CoolFramework.jar into a lib directory in your project. You would now need to put lib/CoolFramework.jar into your classpath. The VM will look inside the jar file for the org/javaguy/coolframework part, and find your class.

So, classpaths contain:

  • JAR files, and
  • Paths to the top of package hierarchies.

How do you set your classpath?

The first way everyone seems to learn is with environment variables. On a unix machine, you can say something like:

export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/

On a Windows machine you have to go to your environment settings and either add or modify the value that is already there.

The second way is to use the -cp parameter when starting Java, like this:

java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/"  MyMainClass

A variant of this is the third way which is often done with a .sh or .bat file that calculates the classpath and passes it to Java via the -cp parameter.

There is a "gotcha" with all of the above. On most systems (Linux, Mac OS, UNIX, etc) the colon character (:) is the classpath separator. On Windows the separator is the semicolon (;)

So what's the best way to do it?

Setting stuff globally via environment variables is bad, generally for the same kinds of reasons that global variables are bad. You change the CLASSPATH environment variable so one program works, and you end up breaking another program.

The -cp is the way to go. I generally make sure my CLASSPATH environment variable is an empty string where I develop, whenever possible, so that I avoid global classpath issues (some tools aren't happy when the global classpath is empty though - I know of two common, mega-thousand dollar licensed J2EE and Java servers that have this kind of issue with their command-line tools).

Answer from bokmann on Stack Overflow
Top answer
1 of 12
910

When programming in Java, you make other classes available to the class you are writing by putting something like this at the top of your source file:

import org.javaguy.coolframework.MyClass;

Or sometimes you 'bulk import' stuff by saying:

import org.javaguy.coolframework.*;

So later in your program when you say:

MyClass mine = new MyClass();

The Java Virtual Machine will know where to find your compiled class.

It would be impractical to have the VM look through every folder on your machine, so you have to provide the VM a list of places to look. This is done by putting folder and jar files on your classpath.

Before we talk about how the classpath is set, let's talk about .class files, packages, and .jar files.

First, let's suppose that MyClass is something you built as part of your project, and it is in a directory in your project called output. The .class file would be at output/org/javaguy/coolframework/MyClass.class (along with every other file in that package). In order to get to that file, your path would simply need to contain the folder 'output', not the whole package structure, since your import statement provides all that information to the VM.

Now let's suppose that you bundle CoolFramework up into a .jar file, and put that CoolFramework.jar into a lib directory in your project. You would now need to put lib/CoolFramework.jar into your classpath. The VM will look inside the jar file for the org/javaguy/coolframework part, and find your class.

So, classpaths contain:

  • JAR files, and
  • Paths to the top of package hierarchies.

How do you set your classpath?

The first way everyone seems to learn is with environment variables. On a unix machine, you can say something like:

export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/

On a Windows machine you have to go to your environment settings and either add or modify the value that is already there.

The second way is to use the -cp parameter when starting Java, like this:

java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/"  MyMainClass

A variant of this is the third way which is often done with a .sh or .bat file that calculates the classpath and passes it to Java via the -cp parameter.

There is a "gotcha" with all of the above. On most systems (Linux, Mac OS, UNIX, etc) the colon character (:) is the classpath separator. On Windows the separator is the semicolon (;)

So what's the best way to do it?

Setting stuff globally via environment variables is bad, generally for the same kinds of reasons that global variables are bad. You change the CLASSPATH environment variable so one program works, and you end up breaking another program.

The -cp is the way to go. I generally make sure my CLASSPATH environment variable is an empty string where I develop, whenever possible, so that I avoid global classpath issues (some tools aren't happy when the global classpath is empty though - I know of two common, mega-thousand dollar licensed J2EE and Java servers that have this kind of issue with their command-line tools).

2 of 12
127

Think of it as Java's answer to the PATH environment variable - OSes search for EXEs on the PATH, Java searches for classes and packages on the classpath.

🌐
Wikipedia
de.wikipedia.org › wiki › Klassenpfad
Klassenpfad – Wikipedia
January 22, 2007 - Wird der Java-Compiler genutzt, lässt sich der Klassenpfad mit dem Kommandozeilenparameter classpath setzen:
🌐
Oracle
docs.oracle.com › javase › 8 › docs › technotes › tools › windows › classpath.html
2 Setting the Class Path
April 21, 2026 - The class path is the path that the Java Runtime Environment (JRE) searches for classes and other resource files. ... The class search path (class path) can be set using either the -classpath option when calling a JDK tool (the preferred method) or by setting the CLASSPATH environment variable.
Find elsewhere
🌐
Michigan State University
web.pa.msu.edu › reference › jdk-1.2.2-docs › tooldocs › solaris › classpath-linux.html
Setting the class path
The class path can be set using either the -classpath option when calling a JDK tool (the preferred method) or by setting the CLASSPATH environment variable. The -classpath option is preferred because you can set it individually for each application without affecting other applications and ...
🌐
Edureka
edureka.co › blog › set-java-classpath
How To Set Classpath In Java | Java Path And Classpath | Edureka
June 19, 2023 - 1. In vi editor open /etc/profile # vi /etc/profile . 2. Add export JAVA_HOME=/usr/jdk1.8.0. 3. Add export CLASSPATH=$CLASSPATH:/home/LOG4J_HOME/log4j-2.2.16.jar:.. 4. Add export PATH=$PATH:/usr/jdk1.8.0/bin. 5. Run # . /etc/profile to activate these settings.
🌐
Oracle
docs.oracle.com › javase › tutorial › essential › environment › paths.html
PATH and CLASSPATH (The Java™ Tutorials > Essential Java Classes > The Platform Environment)
If the version is old or you get the error java: Command not found, then the path is not properly set. To set the path permanently, set the path in your startup file. For C shell (csh), edit the startup file (~/.cshrc): ... For ksh, the startup file is named by the environment variable, ENV.
🌐
Princeton
cs.princeton.edu › courses › archive › fall97 › cs461 › jdkdocs › tooldocs › win32 › classpath.html
classpath - Environment Variables
To set CLASSPATH, use the set command. Classes can be saved either in individual class files, such as MyClass.class, or in groups in a file such as classes.zip or classes.jar. When specifying a path to a .zip or .jar file, you must end the path with the filename.
🌐
Java-blog-buch
java-blog-buch.de › 0703-einbinden-von-externen-klassen-classpath
07.03 Einbinden von externen Klassen – Classpath – Java-Blog-Buch
January 5, 2009 - Hierzu müssen Sie aber nicht den kompletten Pfad zum aktuellen Verzeichnis angeben, da (wie erwähnt) auch ein relativer Pfad genügt. Für das aktuelle Verzeichnis reicht also ein „.“. Wenn Sie mehrere Pfade setzen möchten, werden diese mit einem Semikolon separiert. Es ergibt sich also folgender Aufruf: java -classpath "Pfad/Zum/Projektverzeichnis/von/Addition";. de.jbb.UseExClass
🌐
Delft Stack
delftstack.com › home › howto › java › java classpath
How to Set Classpath in Java | Delft Stack
February 2, 2024 - It is recommended to use the -cp or -classpath option from the command line to specify the classpath. It will make sure that no global configurations are altered. Enjoying our tutorials?
🌐
Javatpoint
javatpoint.com › how-to-set-classpath-in-java
How to Set CLASSPATH in Java - Javatpoint
August 6, 2014 - CLASSPATH is an environment variable which is used by Application ClassLoader to locate and load the .class files. The CLASSPATH defines the path, to find third-party and user-defined classes that are not extensions or part of Java platform. Include all the directories which contain .class files and JAR files when setting the CLASSPATH.
🌐
Java-Forum
java-forum.org › foren › java - programmierung › allgemeine java-themen
Classpath per Java Programm setzen
June 28, 2005 - Zum Vergrößern anklicken.... nein, vergiss das schau dir mal in der docu den -cp paramter an, am besten ist es nämlich, wenn man den classpath bei jedem aufruf einer jvm immer neu (und richtig) setzt: java -cp einlist;emi;tmein;enjars;und;ordnern EineKlasseMitMain oder über das Classpath Attribut in der Manifest.mf setzen
🌐
Ubuntuusers
forum.ubuntuusers.de › topic › wie-setzt-man-den-classpath-in-java
Wie setzt man den Classpath in Java? › Shell und Programmieren › Fortgeschrittene Themen › Forum › ubuntuusers.de
January 25, 2015 - Anmeldungsdatum: 24. Januar 2015 · Hey, Bin absoluter Anfänger und bekomms einfach nicht auf die Reihe nen CLASSPATH zu setzen.... Hab prog1tools.zip abgespeichert in:
🌐
Java-Forum
java-forum.org › foren › java - programmierung › java basics - anfänger-themen
Classpath anlegen ♨󠄂‍󠆷 Java - Hilfe | Java-Forum.org
August 28, 2012 - set CLASSPATH=PfadZuMeinem.jar setzen. Falls Du eine IDE verwendest, bietet diese mit Sicherheit Möglichkeiten fremde jars mit ins Projekt auf zu nehmen (in Eclipse z.B.
🌐
Princeton CS
introcs.cs.princeton.edu › java › 15inout › classpath.html
Setting the Classpath in Java
Place the shared library files (StdDraw.java, StdIn.java, and StdOut.java) in a commond directory, say C:\introcs. Go to that directory and compile them. ... From DrJava, choose the menu option Edit -> Preferences -> Resource Locations -> Extra Classpath -> Add and select C:\introcs.
🌐
How to do in Java
howtodoinjava.com › home › java basics › java classpath
How to set CLASSPATH in Java - HowToDoInJava
February 23, 2023 - Use the . (dot) to include the current path in the classpath where the .class file has been generated. $ javac –classpath C:\dependency\framework.jar MyApp.Java $ java –classpath .;C:\dependency\framework.jar MyApp
🌐
Eclipse
archive.eclipse.org › eclipse › downloads › documentation › 2.0 › html › plugins › org.eclipse.jdt.doc.user › tasks › tasks-114.htm
Adding a classpath variable to the build path
The New Variable Classpath Entry dialog appears which shows all available classpath variables. You can Edit... New... a variable or create a new variable with New.... Press New... Enter the variable's name and path then press OK. If the variable resolves to a folder, you have to specify a path extension that points to a JAR. To do this press the Extend... button. If the variable already resolves to a JAR file you can click OK directly. Hint: You can add multiple variable entries at once to the Java build path: Select more than one variable in the New Variable Classpath Entry dialog, or multiple JAR files in the Variable Extension dialog.