现在有一个 Temp.java 类,它不在任何包路径下:
public class Temp { public static void main(String[] args) { System.out.println("Executed!"); } }同时这个时候系统没有配置 CLASSPATH 这个环境变量,如下图所示:
然后拷贝这个编译后的 Temp.class 文件放到 E 盘的下,然后执行命令 java Temp 命令,是能够正常运行这个 Class 文件的。这个时候并没有配置 CLASSPATH 环境变量,同时也没有在执行命令时指定任何参数,说明类加载器是根据 class path 的默认值去找到这个 Class 文件的,这个默认值就是当前路径。如下图所示:
根据官方文档所说 Java 程序启动的时候会把 class path 的值放到 java.class.path 这个系统属性中,如下图所示:
修改上面的代码,在程序运行的时候把实际的 class path 打印出来,代码如下:
public class Temp { public static void main(String[] args) { System.out.println("Executed!"); System.out.println("The actual class path is :" + System.getProperty("java.class.path")); } }代码执行结果如下图所示:
可以看到代码打印的结果是「.」,即当前路径。
验证 CLASSPATH 环境变量的作用
增加 Windows 系统环境变量,因为上面是把 Temp.class 文件放到了 E 盘下面,所以这里设置的 CLASSPATH 环境变量也是 E 盘,如下图所示:
再次运行程序,执行结果如下图所示:
程序能够正常执行说明通过配置的 E: 这个路径,类加载器能够找到 Temp.class 文件。同时打印的 class path 也是 E: ,符合设置。
验证 -cp 或者 -classpath 参数的作用