Current Working Directory in Java classpath
Can someone explain why the current working directory is getting added to the classpath in these scenarios when I did not include "." in the CLASSPATH?
http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html says that current working directory gets added only when CLASSPATH is not set.
C:\TEMP>set CLASSPATH=;;;
C:\TEMP>%JAVA_HOME%\bin\java test.Test
java.class.path=;;;
classloader:sun.misc.Launcher$AppClassLoader@1cde100
classloader path:[file:/C:/TEMP/, file:/C:/TEMP/, file:/C:/TEMP/, file:/C:/TEMP/]
C:\TEMP>set CLASSPATH=
C:\TEMP>%JAVA_HOME%\bin\java test.Test
java.class.path=.
classloader:sun.misc.Launcher$AppClassLoader@1a16869
classloader path:[file:/C:/TEMP/]
C:\TEMP>set CLASSPATH=a
C:\TEMP>%JAVA_HOME%\bin\java test.Test
Exception in thread "main" java.lang.NoClassDefFoundError: test/Test
Caused by: java.lang.ClassNotFoundException: test.Test
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: test.Test. Program will exit.
C:\TEMP>set CLASSPATH=a;
C:\TEMP>%JAVA_HOME%\bin\java test.Test
java.class.path=a;
classloader:sun.misc.Launcher$AppClassLoader@1a16869
classloader path:[file:/C:/TEMP/a, file:/C:/TEMP/]
C:\TEMP>set CLASSPATH=;a
C:\TEMP>%JAVA_HOME%\bin\java test.Test
java.class.path=;a
classloader:sun.misc.Launcher$AppClassLoader@1a16869
classloader path:[file:/C:/TEMP/, file:/C:/TEMP/a]
C:\TEMP>