还记得最开始学习JAVA的时候,第一件事情就是安装JDK,搭建编译、运行JAVA程序的环境。
安装JDK是一个很简单的过程,点几下鼠标就okay,这不是关键。关键是在你的机器能够运行JAVA程序之前,你还需要配置环境变量。
当时的我还是too young、too simple,带着问题就上了百度,百度倒是尽职尽责,很快就给我列出了一大串的答案,看来遇到这个问题的人还真不少。可是一条条链接点进去,一个个方法试下来,却发现没有用。
百度上给出的答案基本上呈现如下格式:
1、右击我的电脑选择——属性——高级——环境变量——系统变量
2、新建一个变量名为“CLASSPATH”,变量值为“C:\Program Files\Java\jdk1.5.0_14\lib\tools.jar;C:\Program Files\Java\jdk1.5.0_14\lib\dt.jar;.;”中间用分号隔开,若修改了安装目录的,则需修改成相应目录。
3、再新建一个变量名为“JAVA_HOME”,变量值值为“C:\Program Files\Java\jdk1.5.0_14;”。
4、打开系统变量“PATH”,在变量值后面添加“C:\Program Files\Java\jdk1.5.0_14\bin;”
有四个步骤,路径也不少,看起来很高端,但是如果你把这些东西复制到你的电脑,因为JDK安装目录的不同、版本的不同,很有可能不会起到任何作用。并且,作者没有解释这里的环境变量是干什么的,为什么要这样设置,这样的回答只会让读者更加迷惑,或者有那些偶然幸运的人,恰好解决了自己的问题,但是也完全不知道为什么要这么做,下次遇到类似的问题,还是不知道该怎么配置。
写作本文目的
针对有以上情况的出现,本文的写作目的就是尽可能清晰地讲解这个问题的解决办法,节约那些初学JAVA后来者宝贵的时间。因为,时间真的少,浪费别人时间无异于谋财害命。
首先来讲讲PATH、CLASSPATH、JAVA_HOME这三个环境变量。
ATTENTION:在Windows下,不区分大小写,所以PATH和path没有区别,而Linux是区分大小写的。
PATH:这个变量的作用是告诉你的电脑在哪些路径下查找命令。
我们知道,运行JAVA程序之前需要将JAVA源程序编译成字节码,也就是.class的文件,这一步需要调用javac命令;然后将字节码送给JVM(JAVA虚拟机)解释运行,这一步需要调用java命令。
很明显,只要把java和javac命令的目录添加到PATH变量下就可以了。添加好之后,进入cmd,输入java/javac,会输出怎么使用这两个命令的帮助信息,而不是像添加前那样出现“java不是内部或外部命令,也不是可运行的程序或批处理文件”,这就说明路径添加正确。
实际上,安装JDK1.5或之后版本的用户仅仅只用设置PATH这一个环境变量就好了,完全可以正常运行JAVA程序。下面我来解释为什么。
CLASSPATH:这个环境变量的作用是告诉JVM到哪里去找需要运行的类。
比如说,在使用java命令的时候,格式如下
java myclass
这个myclass就是需要运行的类,包含程序的入口——主函数。
这里有一个问题,去哪里找这个类呢?用户可能或说,在当前目录下找啊,没错,大部分情况都是在当前目录下找,但是机器不像人一样智能,它只能执行用户事先设定好的指令,不会根据实际情况去分析自己应该做的事情。在JDK 1.5之前,这件事需要用户告诉电脑,但是在JDK1.5及以后的版本中,在安装JDK的时候这个路径就已经告诉电脑了,所以不需要用户手动去设置路径。这也是上面我说安装JDK1.5或之后版本的用户仅仅只用设置PATH这一个环境变量的原因。
再看看上面我贴出来百度到的CLASSPATH路径设置,如下
C:\Program Files\Java\jdk1.5.0_14\lib\tools.jar;C:\Program Files\Java\jdk1.5.0_14\lib\dt.jar;.;
注意这里有三个路径,最后一个只有一个“.”。“.”表示在当前路径下搜索JAVA类。
C:\Program Files\Java\jdk1.5.0_14\lib这是那位作者的JDK安装目录,也是安装JDK时候的默认目录。他在下面新建了一个叫JAVA_HOME的变量,变量的值就是这个路径,定义了新的变量之后,其实他的CLASSPATH就可以像下面这样设置:
%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;.;
但是他又没有用,说明那位作者根本不知道为什么需要定义JAVA_HOME这样一个变量。
至于为什么需要在CLASSPATH中包含tools.jar和dt.jar这两个文件,是因为这两个文件里包含了很多运行JAVA程序需要的类。像前面所使用的javac命令,其实这个命令仅仅是包装了tools.jar\sun\tools\javac下面的Main类。
JAVA_HOME:上面已经提到,这里不再赘述。
总结
说了这么多,总结一下怎么配置环境变量。
情况一:安装JDK1.5及之后版本的用户,只要定义一个环境变量——PATH,PATH的值是%JAVA_HOME%\bin。
注意事项:很有可能你的环境变量里头已经存在PATH这个变量(PATH和path一样),你只要在变量里面加上%JAVA_HOME%\bin这一条就可以。
或者你也可以在用户环境变量里新定义一个PATH变量,填上%JAVA_HOME%\bin,用户环境变量和系统环境变量的区别在于用户环境变量只是针对你一个用户而言的,因为Windows是一个多用户的操作系统,如果你的电脑只是你一个人用,那这两个环境变量就几乎没有区别。
情况二:安装JDK1.5之前的版本。这个时候你可以像本文前面提到的那样配置三个环境变量。