You have to explicitly include the jar libraries in your CLASSPATH
For example, let us use log4j in our HelloWorld - instead of printing to console ourselves, we will use log4j to do it.
* Create a /lib directory under /confucius
For example, I have:
C:\users\LavanniM\confucius\lib
* Download the log4.jar (it will be something like log4j-1.2.16.jar - with the version) from the log4j website
* Copy the jar to the \lib
Now update your HelloWorld class to use log4j
 import org.apache.log4j.Logger;  
 import org.apache.log4j.BasicConfigurator;  
   
 class HelloWorld {  
      public static void main(String[] args) {  
           // Set up a simple configuration that logs on the console.  
           BasicConfigurator.configure();  
           Logger logger = Logger.getLogger(HelloWorld.class);  
           logger.debug("Hello World!");  
      }  
 }  
   
   
* Try compiling the source code (you will get a compilation error - see below):
 C:\users\LavanniM\confucius>javac HelloWorld.java  
 HelloWorld.java:1: package org.apache.log4j does not exist  
 import org.apache.log4j.Logger;  
             ^  
 HelloWorld.java:2: package org.apache.log4j does not exist  
 import org.apache.log4j.BasicConfigurator;  
             ^  
 HelloWorld.java:7: cannot find symbol  
 symbol : variable BasicConfigurator  
 location: class HelloWorld  
         BasicConfigurator.configure();  
         ^  
 HelloWorld.java:8: cannot find symbol  
 symbol : class Logger  
 location: class HelloWorld  
         Logger logger = Logger.getLogger(HelloWorld.class);  
         ^  
 HelloWorld.java:8: cannot find symbol  
 symbol : variable Logger  
 location: class HelloWorld  
         Logger logger = Logger.getLogger(HelloWorld.class);  
                  ^  
 5 errors  
   
 C:\users\LavanniM\confucius>  
Easy to see why - our log4j.jar is not in the CLASSPATH.
So try adding the /lib directory to the CLASSPATH and try again - it will still fail (see below)
 C:\users\LavanniM\confucius>set CLASSPATH=C:\users\LavanniM\confucius;C:\users\LavanniM\confucius\lib;  
   
 C:\users\LavanniM\confucius>javac HelloWorld.java  
 HelloWorld.java:1: package org.apache.log4j does not exist  
 import org.apache.log4j.Logger;  
             ^  
 HelloWorld.java:2: package org.apache.log4j does not exist  
 import org.apache.log4j.BasicConfigurator;  
             ^  
 HelloWorld.java:7: cannot find symbol  
 symbol : variable BasicConfigurator  
 location: class HelloWorld  
         BasicConfigurator.configure();  
         ^  
 HelloWorld.java:8: cannot find symbol  
 symbol : class Logger  
 location: class HelloWorld  
         Logger logger = Logger.getLogger(HelloWorld.class);  
         ^  
 HelloWorld.java:8: cannot find symbol  
 symbol : variable Logger  
 location: class HelloWorld  
         Logger logger = Logger.getLogger(HelloWorld.class);  
                  ^  
 5 errors  
   
 C:\users\LavanniM\confucius>  
Not so easy to understand why this time - but it is because we included the /lib directory - but NOT the jar itself (this is always a big source of confusion)
So now try adding the log4j.jar in the CLASSSPATH and this time commpilation will succeed - and the program will run (see below)
 C:\users\LavanniM\confucius>set CLASSPATH=C:\users\LavanniM\confucius;C:\users\LavanniM\confucius\lib\log4j-1.2.16.jar;  
   
 C:\users\LavanniM\confucius>javac HelloWorld.java  
   
 C:\users\LavanniM\confucius>java HelloWorld  
 0 [main] DEBUG HelloWorld - Hello World!  
   
 C:\users\LavanniM\confucius>  
1 comment:
Same example by setting the classpath from the command line:
dattanik@DattaniK-02 /cygdrive/c/Temp/java_test
$ javac -cp ./lib HelloWorld.java
HelloWorld.java:1: package org.apache.log4j does not exist
import org.apache.log4j.Logger;
^
HelloWorld.java:2: package org.apache.log4j does not exist
import org.apache.log4j.BasicConfigurator;
^
HelloWorld.java:9: cannot find symbol
symbol : variable BasicConfigurator
location: class HelloWorld
BasicConfigurator.configure ();
^
HelloWorld.java:10: cannot find symbol
symbol : class Logger
location: class HelloWorld
Logger logger = Logger.getLogger (HelloWorld.class);
^
HelloWorld.java:10: cannot find symbol
symbol : variable Logger
location: class HelloWorld
Logger logger = Logger.getLogger (HelloWorld.class);
^
5 errors
dattanik@DattaniK-02 /cygdrive/c/Temp/java_test
$ javac -cp ./lib/apache-log4j-1.2.16/log4j-1.2.16.jar HelloWorld.java
dattanik@DattaniK-02 /cygdrive/c/Temp/java_test
$
Post a Comment