All:
I am in Lesson 3, Packages and Java Classpath.
I thought I got the Classpath, but now I am not so sure.
In the Command Line Stream below, I have the Hello.class in 2
directories(...MyJava and C:\tmp).
1. The first command (C:\Documents
and Settings\Dave>java Hello) is expected to fail because the class is not in
the current directory.
2. I change directories to one that contains the class file and execute again
(C:\Documents
and Settings\Dave\My Documents\MyJava>java Hello) successfully because the
class is located in that current directory.
3. I change directories again to the second directory that contains a copy of
the class file and successfully execute (C:\tmp>java
Hello)
4. I set the CLASSPATH (C:\tmp>set
CLASSPATH = c:\tmp) then change to the parent directory which does not contain
the class file.
5. At this point, I would expect the class file to execute because of the
CLASSPATH being set, but it does not
C:\>java
HelloException in thread "main"
java.lang.NoClassDefFoundError: Hello
6. I display the classpath which seems correct
C:\>set
classpath
CLASSPATH=.;C:\Program
Files\Java\jre6\lib\ext\QTJava.zipCLASSPATH
= c:\tmp
7. But, if I use the -classpath option in the java line, it works as expected
(C:\>java
-classpath c:\tmp Hello)
So
can anyone help me as to why the Classpath does not seem to work as
expected? I did notice that my "set Classpath" statement created a
second line with classpath listed twice. Is that it?
------
C:\Documents
and Settings\Dave>java Hello
Exception in thread "main"
java.lang.NoClassDefFoundError: Hello
Caused by: java.lang.ClassNotFoundException:
Hello
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at
java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: Hello. Program will exit.
C:\Documents and Settings\Dave>cd My
Documents\MyJava
C:\Documents
and Settings\Dave\My Documents\MyJava>java Hello
Hello world
C:\Documents and Settings\Dave\My
Documents\MyJava>cd c:\tmp
C:\tmp>java
Hello
Hello world
C:\tmp>set
CLASSPATH = c:\tmp
C:\tmp>cd c:\
C:\>java
Hello
Exception in thread "main"
java.lang.NoClassDefFoundError: Hello
Caused by: java.lang.ClassNotFoundException:
Hello
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: Hello. Program will exit.
C:\>set
classpath
CLASSPATH=.;C:\Program
Files\Java\jre6\lib\ext\QTJava.zip
CLASSPATH
= c:\tmp
C:\>java
-classpath c:\tmp Hello
Hello world
Thx to all,
DaveB
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/javaprogrammingwithpassion?hl=en
-~----------~----~----~----~------~----~------~--~---