1.4 系统环境变量
在计算机操作系统中可以定义一系列变量,这些变量可供操作系统上所有的应用程序使用,被称作系统环境变量。在学习Java的过程中,需要涉及两个系统环境变量path和classpath,接下来分别对它们进行讲解。
1.4.1 path环境变量
path 环境变量是系统环境变量中的一种,它用于保存一系列的路径,每个路径之间以分号分隔。当在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找该文件是否存在,如果不存在,会继续在path环境变量中定义的路径下寻找这个文件,如果仍未找到,系统会报错。例如,在命令行窗口输入“javac”命令,并按下回车,会看到错误提示,如图1-13所示。
图1-13 找不到javac.exe命令
从图1-13的错误提示可以看出,系统没有找到javac命令。在命令行窗口输入“set path”命令,可以查看当前系统的path环境变量,如图1-14所示。
图1-14 查看path环境变量
从图1-14中列出的path环境变量可以看出,其中并没有包含“javac”命令所在的目录,因此操作系统找不到该命令。为了解决这个问题,需要在命令行窗口输入一行命令,将“javac”命令所在的目录添加至path环境变量中。命令如下所示:
set path=%path%;C:\Program Files\Java\jdk1.7.0_60\bin
其中,“%path%”表示引用原有的path环境变量,“C:\Program Files\Java\jdk1.7.0_60\bin”表示javac命令所在的目录。整行命令的作用就是在原有的path环境变量值中添加javac命令所在的目录。
再次输入“set path”命令查看path环境变量,结果如图1-15所示。
图1-15 设置path环境变量
设置完path环境变量后,再次运行“javac”命令,图1-13的错误情况就不会再出现了,命令行中会显示“javac”命令的帮助信息,如图1-16所示。
图1-16 javac命令帮助信息
由于“java”命令和“javac”命令位于同一个目录中,因此在配置完path环境变量后,同样可以在任意的路径下执行“java”命令。
重新打开一个新的命令行窗口,再次运行javac命令,又会出现和图1-13一样的错误,使用“set path”命令查看环境变量,会发现之前的设置无效了。出现这种现象的原因在于,在命令窗口中,对环境变量进行任何修改只对当前窗口有效,一旦关闭窗口,所有的设置都会失效。因此,要想让环境变量永久生效,就需要在系统中对环境变量进行配置。让Windows系统永久性地记住所配置的环境变量。配置系统环境变量的步骤如下。
1.查看Windows系统属性中的环境变量
右键单击桌面上的【计算机】,从打开菜单中选择【属性】,在出现的【系统】窗口中选择左边的【高级系统设置】选项,然后在【高级】窗口中单击【环境变量】按钮,打开【环境变量】窗口,如图1-17所示。
图1-17 环境变量窗口
2.设置path系统环境变量
在【环境变量】窗口中的【系统变量】区域选中名为“Path”的系统变量,单击【编辑】按钮,打开【编辑系统变量】窗口,如图1-18所示。
图1-18 编辑前系统变量窗口
在【变量值】文本区域内的开始处,添加“javac”命令所在的目录路径“C:\Program Files\Java\jdk1.7.0_60\ bin”,并在路径末尾用英文半角分号(;)结束,将其与后面的路径隔开,如图1-19所示。
图1-19 编辑后系统变量窗口
添加完成后,依次单击打开窗口的【确定】按钮,完成设置。
3.查看和验证设置的path系统环境变量
打开命令行窗口,执行“set path”命令,查看设置后的path变量的变量值,如图1-20所示。
图1-20 查看path环境变量
从图1-20可以看出,环境变量path值的第一行已经显示出了配置路径信息。在命令行窗口中执行javac命令,如果能正常地显示帮助信息,说明系统path环境变量配置成功,这样系统就永久性地记住了path环境变量的设置。
1.4.2 classpath环境变量
classpath环境变量也用于保存一系列路径,它和path环境变量的查看与配置的方式完全相同。当Java虚拟机需要运行一个类时,会在classpath环境变量中所定义的路径下寻找所需的class文件和类包。
打开命令提示行窗口,进入 C 盘根目录下,然后执行“java HelloWorld”命令,运行之前编译好的Java程序,结果会报错,如图1-21所示。
图1-21 classpath环境变量
出现图中所示错误的原因在于,Java虚拟机在运行程序时无法找到“HelloWorld.class”文件。为了解决这个错误,首先来通过“set classpath”命令查看当前classpath环境变量的值,如图1-22所示。
图1-22 查看classpath环境变量
从图1-22中可以看出,当前classpath环境变量没有设置,为了让Java虚拟机能找到所需的class文件,就需要对classpath环境变量进行设置,在命令行窗口输入下面的命令:
set classpath=C:\Program Files\Java\jdk1.7.0_60\bin
再次执行“java HelloWorld”命令运行程序,会看到正确的结果,如图1-23所示。
图1-23 运行HelloWorld程序
从图1-23可以看出,在命令窗口中设置classpath后,程序会根据classpath的设置,去其指定的目录中寻找类文件,所以程序可以正确执行。classpath 除了可以指定要执行类的路径外,还可以指定运行Java程序所需的标准类包的路径。JDK所提供的标准类包有两个,分别是dt.jar和tools.jar,它们位于JDK安装目录的lib文件夹下。在配置环境变量时,通常会将这两个JAR包配置到classpath中,其配置的方式非常简单,只需要在【环境变量】窗口中的【系统变量】区域单击【新建】按钮,在弹出的新建系统变量窗口中,在变量名的文本区域输入“CLASSPATH”,变量值的文本区域输入“.;C:\Program Files\Java\jdk1.7.0_60\ lib\dt.jar;C:\Program Files\Java\jdk1.7.0_60\lib\tools.jar”,单击【确定】按钮即可。在设置CLASSPATH变量时,必须在配置路径前添加“.;”(当前目录),用于识别当前目录下的Java类。
值得注意的是,在1.3小节中并没有对classpath环境变量进行设置,但在“C:\Program Files\Java\jdk 1.7.0_60\bin”目录下仍然可以使用“java”命令正常运行程序,而没有出现无法找到“HelloWorld.class”文件的错误。这是因为从JDK 5.0开始,如果classpath环境变量没有进行设置,Java虚拟机会自动将其设置为“.”,也就是当前目录。