Java基础案例教程(第2版)
上QQ阅读APP看书,第一时间看更新

1.4.2 classpath环境变量

classpath环境变量用于保存一系列类包的路径,它与path环境变量的查看和配置方式完全相同。当Java虚拟机需要运行一个类时,会在classpath环境变量定义的路径下寻找所需的.class文件和类包。

打开命令行窗口,进入C盘根目录下执行“java HelloWorld”命令,运行之前编译好的HelloWorld程序,结果会报错,如图1-21所示。

图1-21 运行程序报错

图1-21中命令出现错误的原因在于,Java虚拟机在运行程序时无法找到HelloWorld.class文件,即在C盘根目录下没有HelloWorld.class文件。为了纠正这个错误,首先通过“set classpath”命令查看当前classpath环境变量的值,确认当前classpath是否保存了HelloWorld.class文件路径,查看结果如图1-22所示。

图1-22 查看classpath环境变量

从图1-22中可以看出,当前classpath环境变量没有定义,为了让Java虚拟机能找到所需的.class文件,就需要对classpath环境变量进行设置,保存HelloWorld.class文件路径。在命令行窗口输入下面的命令:


set classpath=C:\Program Files\Java\jdk1.8.0_201\bin 

执行完上述命令之后,再次执行“java HelloWorld”命令运行程序,运行结果如图1-23所示。

图1-23 HelloWorld程序运行结果

从图1-23可以看出,“Java HelloWorld”命令成功运行,输出了“hello world”。在命令窗口中设置classpath后,程序会根据classpath的设置去指定的目录寻找类文件,因此,虽然C盘根目录下没有HelloWorld.class文件,但“Java HelloWorld”命令仍能正确执行。

classpath除了可以指定类的路径外,还可以指定运行Java程序所需的标准类包的路径。JDK提供的标准类包有两个,分别是dt.jar和tools.jar,它们位于JDK安装目录的lib文件夹下。在配置环境变量时,通常会将这两个JAR包配置到classpath中,且配置方式非常简单。在“环境变量”对话框中的“系统变量”区域单击【新建】按钮,弹出“新建系统变量”对话框,在“变量名”文本输入框中输入“CLASSPATH”,在“变量值”文本输入框中输入dt.jar和tools.jar两个类包的路径,如图1-24所示。

完成图1-24所示对话框中的配置之后,单击【确定】按钮即可。需要注意的是,在设置CLASSPATH变量时,必须在配置路径前添加“.;”(当前目录),用于识别当前目录下的Java类。

在1.3节中并没有设置classpath环境变量,但在“C:\Program Files \Java\jdk1.8.0_201\bin”目录下仍然可以使用“java”命令正常运行程序,而没有出现无法找到“HelloWorld.class”文件的错误。这是因为从JDK 5开始,如果classpath环境变量没有设置,Java虚拟机会自动将其设置为“.”,也就是当前目录。

图1-24 “新建系统变量”对话框