Home Java Java ClassPath
Questions:Ask|Latest


 
 

Share on Google+Share on Google+

Java ClassPath

Advertisement
What is PATH and CLASSPATH variables?

Java ClassPath

     

Question: What is the meaning of PATH and CLASSPATH ? How it is set in environment variable?.

ANS:- Significance of searching class path

Java is an OOP language. In java programming language for compiling the program we use the compiler that converts the source code into the byte code after that, that byte code is interpreted by JVM that converts the bytecode into the machine independent code.  In java how the Java compiler and the JVM use the class search path to locate classes when they are referenced by other Java code. Searching class  path is important for all Java developers.Many  development tools have their own ways of manipulating the class path, which vary from product to product.For doing this we will use only simple command-line tools to carry out the compile operations. No difference, between the way that the Java compiler searches for classes, and the way that the JVM does it at run time. The compiler has the ability to compile classes from source code, where the JVM does not.  We will use the compiler, but similar issues apply at run time.

Searching of multiple class directories

  • javac(compiler)search the files in only one directory at a time.
  • But,  class search path will contain numerous directories and JAR archives. The -classpath option to javac and java allows multiple entries to be specified, but  the syntax is  different for Unix and Windows systems.
Advertisement

For Unix  like this

javac -classpath dir1:dir2:dir3 ...

For Windows like this 


javac -classpath dir1;dir2;dir3 ...

The difference is that Windows uses the colon (:) character as part of a filename, so it can't be used as a filename separator. Naturally the directory separator character is different as well: forward slash (/) for Unix and backslash (\) for Windows.

( I ). For running a simple program we need to set the  java path  on command prompt(for temporary )& in Environment variable using PATH variable  & CLASSPATH variable :

PATH variable 

In JDK the PATH variable contains directories where binary files (e.g. EXE files in Windows) will be looked for.We set the PATH variables like this i.e path C:\Java\jdk1.6.0_03\bin 

(i)on command prompt

C:\>set path=%path;C:\Java\jdk1.6.0_03\bin%

When you open a command prompt and type "javac", you're supposed to have the "bin" directory of your sdk into the PATH, otherwise you'll get an infamous "Command not found" error message.

CLASSPATH 

In JDK the CLASSPATH contains directories (or JAR files), from where your java compiler/runtime will look for .class files (and some others). For example, "java Hello.class" will not work unless you set the directory (or JAR file) Hello.class is in, into your CLASSPATH.
i.e.classpath  C:\Java\jdk1.6.0_03\lib

For setting CLASSPATH using command prompt 

Java class path can be set using either the -classpath option when calling an SDK 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 without other applications modifying its value.

(ii)on command prompt 

C:\>set classpath=%classpath;C:\Java\jdk1.6.0_03\lib%

JARs on the classpath

Java compiler and run-time can search for classes not only in separate files, but also in `JAR' archives. A JAR file can maintain its own directory structure, and Java follows exactly the same rules as for searching in ordinary directories. Specifically, `directory name = package name'. Because a JAR is itself a directory, to include a JAR file in the class search path, the path must reference the JAR itself, not the directory that contains the JAR. This is a very common error. Suppose I have a JAR jarclasses.jar in directory /jarclasses. The Java compiler look for classes in this jar, we need to specify:

javac -classpath /jarclasses/jarclasses.jar ...

and not merely the directory jarclasses.

For the CLASSPATH  use  CLASSPATH Environment Variable 

In java programming language we use the following packages such as  java.io.*;  java. util.*;These  packages are  just a set of classes, you will want to store them in one place, separate from the directory where you are developing your program. Sometimes these libraries have a set of files stored in a single jar file ( with a .jar extension). From where  the Java compiler and run programs must be able to find any of these. This is done for command line use of Java and for some editors and IDEs by setting an environment variable called CLASSPATH. For  Windows, the CLASSPATH environment variable should look like this :

c:\MyJavaLib;c:\MyJavaLib\myutils.jar;c:\MyJavaLib\blackboxclasses.jar;.

At the end " . "  includes the current directory in the search for classes. 

  • Suppose we have a directory MyJavaLib on the C-drive that contains some utility classes or the directories that correspond to some packages. This  is the part before the first semi-colon. 
     
  • Second part indicates that we have some classes stored in a file myutils.jar 
     
  • Third part indicates that we have a jar file blackboxclasses.jar. 

Finally, after the last semi-colon we have the period( . ), indicating that the current directory is on the CLASSPATH. If some things are stored in directories that are subdirectories, the complete path, starting with "c:\" should be in the CLASSPATH.

(2)  For  setting CLASSPATH & PATH variable  in environment variable by using the following steps:

(i) right click on my computer icon on desktop

(ii) click on properties

(iii) click on advanced

(iv) click on  Environment variables

(v)  system varables  click on  new

(vi) in ( variable name) write ----- path

in ( variable value)  paste the path till bin directory i.e.------- c:\java\jdk1.6.0_03\bin click on ok

(vii)  in system varables again click on  new

(viii) in ( variable name) write ----- classpath

in ( variable value)  paste the path till lib directory i.e.------- c:\java\jdk1.6.0_03\lib  click on ok

(ix) after finished click on ok

(x) finished click on ok

How to set System Classpath :

Java class path is set for including the various files during program execution & compilation.After setting class search path on the javac command line, we set `system' class path. This  class path  will be used by both the Java compiler and the JVM . In both Unix and Windows systems, this is done by setting an environment variable. For example, in Linux with the bash shell:

CLASSPATH=/jarclasses/jarclasses.jar;export CLASSPATH 

for Windows:

set CLASSPATH=c:\jarclasses\jarclasses.jar

We use this procedure for setting  short-term changes to the system CLASSPATH, but if you want these changes to be persistent you will need to arrange this yourself.For different - 2 system this path  is different . On a Linux system, we  put the commands in the file .bashrc in my home directory. On Windows 2000/NT there is a `Control Panel' page for this.

Setting the system CLASSPATH is a useful procedure if you have JARs full of classes that you use all the time.

Advertisement

Liked it!  Share this Tutorial


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: February 16, 2005

Ask Questions?    Discuss: Java ClassPath   View All Comments

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments
thulasiram
May 27, 2011
path for you can run java any where you feel hapy

Running a Java Program from Command Prompt Create a temporary folder C:\mywork. Using Notepad or another text editor, create a small Java file HelloWorld.java with the following text: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } Save your file as HelloWorld.java in C:\mywork. To make sure your file name is HeloWorld.java, (not HelloWorld.java.txt), first choose "Save as file type:" All files, then type in the file name HelloWorld.java. Run Command Prompt (found under All Programs/Accessories in the Start menu). Type C:\> cd \mywork This makes C:\mywork the current directory. C:\mywork> dir This displays the directory contents. You should see HelloWorld.java among the files. C:\mywork> set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin This tells the system where to find JDK programs. C:\mywork> javac HelloWorld.java This runs javac.exe, the compiler. You should see nothing but the next system prompt... C:\mywork> dir javac has created the HelloWorld.class file. You should see HelloWorld.java and HelloWorld.class among the files. C:\mywork> java HelloWorld This runs the Java interpreter. You should see the program output: Hello, World! If the system cannot find javac, check the set path command. If javac runs but you get errors, check your Java text. If the program compiles but you get an exception, check the spelling and capitalization in the file name and the class name and the java HelloWorld command. Java is case-sensitive! It is possible to make the path setting permanent but you have to be very careful because your system might crash if you make a mistake. Proceed with extreme caution! In Windows XP, go to Control Panel, choose "System," click on the "Advanced" tab, click on the "Environment variables" button. In the lower list, "System variables," click on Path: Click "Edit" and at the end append ;C:\Program Files\Java\jdk1.5.0_09\bin (or the path to the appropriate folder where the latest version of JDK is installed). Do not put spaces before the appended path string. Click OK on the path edit box and OK on the Ennvironment Variables box. The new setting will go into effect next time you run Command Prompt.
PAVAN
May 31, 2011
CLASSPATH

I'm using Windows7 i created classpath for java ....But when i try to execute java program it showing classnotfound exception........ When i remove classpath from computer then program runs fine........I tried all possible ways to keep classpath but i doesnt work for me......I cant do JDBC prog's without setting classpath so pls help me
vipin
June 21, 2011
Class path setting problem

sir, i am unable to set my java class path please help me
Advernus
July 2, 2011
Great

Very nice tutorial
jangaiah
July 4, 2011
jangaiah

i want know about java
sonu
July 29, 2011
java

sir whan 1 pakage in another folder and another pakage is cantain in another folder.then how we set the pat
kishore
September 14, 2011
hai

how to set classpath of jdk6
Deepika Ghose
September 27, 2011
how to copy bin directory?

nothing
prabhat ranjan
December 25, 2011
difficulty in setting of path of java.

Hi I have window7 operating system.and i have installed jdk-7u2-windows-x64.exe for java program. But i have a problem to set path of java. and also how to run java program.
vinayaka D J
January 9, 2012
unable to execute jar command

i am trying to execute jar command but its showing command not found what to do
Sunil Sharma
February 1, 2012
How to set the class path.

Thanks to this services for java.
Pradeep Patel
February 18, 2012
Facing problem to set the classpath in java

Hello Sir I'm Pradeep Patel facing problem to set path and classpath for java programs
deepika
March 3, 2012
hi

i am getting noclassfound error while runtime
madhavi
June 29, 2012
java

I have set the path and classpath in environment variables.eventhough iam getting the error like javac:file not found:Demo.java usage java:<options> <source files> please rectify my mistake if any
Nejla
September 28, 2012
sYQaUsZUhBRjMz

My problem is the recoruse file is available in one context (say aa), I'm trying to load the same using ResourceBundle from another context (say bb). But always I get MissingResourceException exception. But it works well when I put the properties file under bb context I think I can use the solution that you mentioned in this post for the time being. But I'm searching for a solution so that I can use ResourceBundle(since the property file is for i18n purposes). Any way thanks dude it is indeed a good post.
abhishek kumar
November 2, 2012
how to set classpath temporary in java

two different folder having same package and same class name
Thiru
July 31, 2013
Java Class path

Its very simple and Working fine .. Thanks
DMCA.com