当了这么多年的老师,手中送走了无数学生,自知水平不足,每日每时不敢有半点懈怠,希望通过自己的努力,能帮助我的学生迈出IT职业生涯的第一步。五年当中,虽有不少谬误,但自认为不辱使命,不敢说让每位同学都满意,但是还是赢得了大部分人的认同。现在就通过这个Blog,希望能将这几年当中教学的一些心得和各位分享,以一种闲话家常的形式,快乐的学习知识,这是我个人一直提倡的学习方法,当然限于本人水平有限,希望大家能够批评指正。
在本系列文章的第一季当中,主要讨论和Java语言相关的基础知识,这些知识有的看起来很简单,但是无论是在开发还是在面试的过程当中都非常的重要。很多老师和同学对此并不重视,以至在日后出了不小的麻烦。下面就请各位随我一起解决这些小麻烦。
第一季第一集 PATH的作用
网络上的常见解释:
常见解释:path是外部命令搜索路径
这个解释是最不靠谱,因为这种解释方式是使用一个名词来解释另外一个名词,因为对于初学者来讲,所谓的”外部命令搜索路径“本来就是陌生的东西。
预备知识:
什么是环境变量:windows帮助文档中的解释:由 Windows 可以使用的与符号名称相关的环境信息(例如,驱动器、路径或文件名)组成的字符串。简单的说,环境变量通常是一组键值对(所谓的键值对是一种数据存储的方式,通常的形式为key=value),下面就是笔者XP操作系统当中的所有环境变量:
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\sniper\Application Data
classpath=.;E:\server\new\apache-tomcat-6.0.18\lib\servlet-api.jar
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=MARS_CHENCHUAN
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\sniper
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14
LOGONSERVER=\\MARS_CHENCHUAN
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\Common Files\Lenovo;C\Program Files\Intel\WiFi\bin\;C:\Program Files\ATI Technologies\ATI.ACE\Core-St
atic;E:\tools\Oracle;C:\Program Files\Java\jdk1.6.0_14\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 6, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0f06
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\sniper\LOCALS~1\Temp
TMP=C:\DOCUME~1\sniper\LOCALS~1\Temp
TNS_ADMIN=E:\tools\Oracle
TPCCommon=C:\PROGRA~1\THINKV~2\PrdCtr
TVT=C:\Program Files\Lenovo
USERDOMAIN=MARS_CHENCHUAN
USERNAME=sniper
USERPROFILE=C:\Documents and Settings\sniper
windir=C:\WINDOWS
粗粗的看上去觉得眼晕,怎么这么多啊,这些东西都是什么作用啊?我们没有必要统统都把它们搞清楚,只需要挑选几个简单的看看就行了。第一个最好理解的环境变量是windir=C:\WINDOWS,只要简单的看看这个变量的名字就可以猜出来它的作用。没错!这个变量就是指出操作系统安装的路径。再看一个OS=Windows_NT,这个变量的作用也可以猜的出来,它的作用是指定操作系统的类型。这样看起来理解这些键值对并不困难,只要查明每个成员变量的作用是什么,因为本文并不是专门讲解各个环境变量作用的,所以如果大家有需要的话可以参考一些专门介绍环境变量的文章。http://hi.baidu.com/148332727/blog/item/1bc70d9a01ebaabdc8eaf4a9.html
有了以上的准备知识,下面就可以来重点关注PATH这个环境变量的作用了。首先请大家考虑一个问题,当我们在windows命令行当中执行ipconfig命令时,通常会产生如下的结果:
C:\>ipconfig
Windows IP Configuration
Ethernet adapter VMware Network Adapter VMnet8:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.16.109.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
那么为什么会产生这个结果呢?其实很简单,因为windows当中有一个可执行文件,名字就叫做ipconfig.exe,在命令行当中执行ipconfig命令时,windows会在硬盘当中搜索ipconfig.exe文件并执行它,执行这个程序所得到的结果就是上面所显示的内容。windows操作系统当中那么多的目录,从什么地方找起呢?这个时候就要求助于PATH环境变量了。从PATH环境变量的值当中可以看出,它的值是一系列的目录,目录和目录之间用分号隔开。当我们在命令行当中执行一个命令时,windows就会首先在当前目录当中寻找有没有和这个命令名字相同的exe文件或者是bat文件,如果没有,就到PATH所指定的第一个目录当中去寻找,如果再没有,就依次的找下去,直到找到为止。如果在PATH所指定的所有目录当中都没有找到,那么就会报出一个错误。讲到这里,我想大家应该明白了PATH的作用。现在的问题就是PATH和Java有什么关系呢?因为在开发Java程序的过程当中,需要对源文件进行编译,使用的是javac命令,而运行类文件,使用的是Java命令,这两个命令的可执行文件位于jdk安装路径下的bin目录当中,如果你的jdk安装在默认路径的话,这两个文件所在的目录应该是C:\Program Files\Java\jdk1.6.0_14\bin。如果你希望在任何路径下都能够执行者两个命令,那么就必须在将这两个可执行文件所在的路径加入到PATH的值当中。以便windows能够找到这两个可执行文件。具体的添加方式就是右键我的电脑--》属性--》高级--》环境变量--》选择path变量--》编辑,然后将jdk的bin目录的路径粘贴在该变量值的最后面,在添加这个路径之间,应该注意在最后PATH原来的值后面先加一个”;“,在把bin的路径加在";"的后面。修改完毕之后,启动新的命令行,环境变量的修改就起作用了。
常见问题:
为什么我安装了Java的1.6版,但是使用java -version命令得到的Java版本确实1.3呢?
引起这个问题的原因很可能是由于安装了其他的软件,而这些软件又安装了自带的虚拟机,典型的如Oracle。安装oracle时,安装程序会在PATH环境变量的最前面加入oracle自己bin目录的路径,而这个目录当中就有java.exe文件。这个时候当我们再执行java命令式,由于windows是按照path环境变量当中所指定的顺序到目录当中去查找java.exe文件,所以先找到的是Oracle的java.exe而不是我们所安装jdk的java.exe。
说到这里,我想聪明的读者已经明白了PATH这个变量的作用,欲知后事如何,且听下回分解!
下回预告--CLASSPATH的作用