首先明白一个基础概念:
1.current directory(当前目录):当前在用的目录就是当前目录
比如说当你打开NOTEPAD,并处于运行状态时候,当前目录就是c:/windows;
如果你用cmd命令打开命令行窗口, 当前目录就是c:/windows/system32;
如果你在用java这条指令,当前目录就是JAVA下的BIN目录所在的路径,因为java.exe在bin里面。在java开发配置环境变量时,系统默认(我们对classpath不做任何设定时)的路径也是当前目录。
2.JAVA_HOME:它是指jdk的安装目录
在这路径下你应该能够找到bin、lib等目录。
为什么要设置它呢,不设定可不可以呢?不设定也是可以滴,但是最好还是设置一下。
我们现在就当它是一个变量代换 JAVA_HOME = D:/j2sdk1.4.2_16,就是为了避免多写字,它还有一个好处就是当我们需要改变某个jdk时,只需要 改JAVA_HOME的值就可以了。等在后面看了Tomcat的启动分析时你就明白了。当在环境变量中引用它的时候要用%JAVA_HOME%来表示 D:/j2sdk1.4.2_16。
3.Path:系统变量Path告诉操作系统可执行文件(*.exe、*.bat等)所在的路径
当OS(操作系统)发现某个*.exe时,windows默认从当前目录开始查找这 个命令,若查不到,OS就会到Path所设定的路径中去寻找该命令,然后执行。
系统默认的系统变量为:Path = %SystemRoot%;%SystemRoot%/system32;%SystemRoot%/System32/Wbem
就是说处于上面3个目录(多个变量用分号隔开)中的*.exe文件,可以在任意地方被执行(在 运行 窗口能直接执行的命令,像cmd、notepad等,基本都 在上面的3个目录里面),所以他们可以直接运行。
上面的%SystemRoot%是什么意思呢?%SystemRoot%就是安装操作系统的时候,系统默认的安装路径
若你的windows xp装在C:/WINDOWS
则你的%systemRoot%路径就是c:/windows
%systemRoot%只是一个符号,代表你的系统安装目录
下面是常见系统默认安装路径:
98----c:/windows
2000--c:/winnt
2003--c:/windows
xp----c:/windows
当我们要进行java开发时,OS经常需要用到java.exe、javac.exe等,(若jdk安装在D:/j2sdk1.4.2_16)因此应该将 D:/j2sdk1.4.2_16/bin(%JAVA_HOME%/bin)加入到系统的path中去。
注意:如果你加入的位置不是在最后,那还需要在bin后面加上英文状态下的分号:%JAVA_HOME%/bin;多个变量之间要用分号隔开,如果它前面 没有,你就加一个。
明确一下:%JAVA_HOME%/jre/bin 这个路径是不需要加入Path的。参考:http://java.sun.com/javase/6/docs/technotes/tools/windows/jdkfiles.html
4.CLASSPATH:告诉java虚拟机(jvm)要使用或执行的*.class文件放在什么地方
CLASSPATH是专门针对java的,它相当于windows的path;path是针对整个windows的。
所谓的JVM就好像是在微软OS上面再激活另外一个OS,对JVM来说CLASSPATH就好像是对微软OS来说的PATH,所以要用jvm开运行程序就需要设定classpath,然而jvm像windows一样它也有个默认的查找class文件的路径,对刚开始学习java的我们来说,默认的已经够我们用了,那就是当前路径,因此不设置classpath也可以。
在windows中 classpath 大小写没有关系,其他的环境变量名称也一样。
当我们不设定classpath时,系统默认的classpath是当前目录,如果你个人想设置classpath的话,那么务必在classpath中加入".",这个英文状态下的点就表示当前目录。至于classpath中要不要加入其他的路径(包括文件目录、包的根目录等),这要看开发的需要,一般我们初学者是用不到的。
JAVA_HOME = D:/j2sdk1.4.2_16
Path 环境变量中在最前面加入(若系统原来没有就新建) %JAVA_HOME%/bin; (加在最前面可以提高查找速度)
CLASSPATH = . 这一步可以不用设。