setting JAVA_HOME & CLASSPATH in CentOS 6

centos, java, noclassdeffounderror, path

Solution

I created a folder named a in /home/prasanth and copied your code to a file named A.java. I compiled from /home/prasanth as `javac a/A.java` and run `javac a.A`. I got output as

a!

Problem

I have unpacked my jdk in /usr/java/. and I put CLASSPATH, PATH, JAVA_HOME into /etc/profile like below. ``` export JAVA_HOME=/usr/java/jdk1.7.0_21 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar ``` And when I compile some java file in /usr/java/jdk1.0.7_21/bin, it works. But when I am doing same thing on other folder, it doesn't. It displays NoClassDefFoundError. So I have checked ClASSPATH, PATH, JAVA_HOME via echo. It shows like below. ``` [root@localhost a]# echo $JAVA_HOME /usr/java/jdk1.7.0_21 [root@localhost a]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/guest/bin:/usr/java/jdk1.7.0_21/bin:/usr/java/bin:/usr/java/jdk1.7.0_21/bin [root@localhost a]# echo $CLASSPATH /usr/java/jdk1.7.0_21/jre/lib/ext:/usr/java/jdk1.7.0_21/lib/tools.jar ``` I want to use java in console, What can I do in this situation? PS. of couse I did `source /etc/profile`. =================The Errors what I'm facing with ======================= when I command java A(My class name is A). ``` Error: Could not find or load main class A ``` case I command java -cp /home/guest/workspace/AAA/src/a/ A ``` Exception in thread "main" java.lang.NoClassDefFoundError: A (wrong name: a/A) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) ``` =====================full content of my code====================================== java part. path is /usr/guest/workspace/AAA/src/a/A.java ``` package a; public class A { public static void main(String[] args) { System.out.println("a!\n"); } } ``` /etc/profile part. left part is default. ``` export JAVA_HOME=/usr/java/jdk1.7.0_21 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar ``` other parts might be helpful to solve. - `which java` prints "/usr/java/bin". there's symbolic link. - My jdk location is /usr/java/jdk1.7.0_21. inside of ./bin every code works fine. - I did not touch /root/.bash_profile. I just edited /etc/profile.

Original source