JAVA与环境变量
初学JAVA时,总是被Winodws的环境变量弄的云里雾里的,总是搞不明白到底这么设置是什么意思,不明白是什么意思,自己重新安装时总是出现问题,让我非常的痛苦,当时在大学学习JAVA的时候那个老师的水平到现在来看,也实在是低的可怜,只告诉你只要这么设置就可以,真是误人子弟啊,我估计还有不少初学的朋友对它也都不太了解,也总是弄不懂,所以写出下文,供大家讨论。
一、首先,先说一下什么是环境变量,及编辑环境变量的位置。
环境变量就是系统(Windows或其他)定义的变量,提供给系统的程序使用。其中的每一项都有特定的用途,在下面将会说明在JAVA中将会使用到的项的用途。
二、我们初学JAVA时,在课堂上能接触到的环境变量有PATH、CLASSPATH,可能还有JAVA_HOME。
假设JAVA安装在C:/java/jdk1.6下,那么基本设置一般为:
path=c:/java/jdk1.6/bin;
classpath=c:/java/jdk1.6/lib/dt.jar;c:/java/jdk1.6/lib/tools.jar;
java_home=c:/java/jdk1.6;
但是基本不太明白到底为什么要这么设置,现在就逐个分析这三条项的意义。
假设我们装完JDK以后并没有在环境变量中设置环境变量,也就是没有添加上面三项中的任意一个。那么,在DOS中执行javac或java命令时就会出现如下界面:
DOS界面提示我们javac不是内部或外部命令,也不是可运行的程序或批处理文件。
何谓内部命令:可以是dir、cd、tree等DOS内部命令。
何谓可运行的程序:指的是在DOS界面中c:/Docments and Setting/Administrator这个根目录
下的.exe文件。
何谓批处理文件:指的是在DOS界面中c:/Docments and Setting/Administrator这个根目录
下的.exe文件或.bat文件。
因为我们知道javac命令是存放在c:/java/jdk1.6/bin路径下(下图),所以它既不是系统内部命令也不是在当下目录(c:/Docments and Setting/Administrator)下可执行的程序和批处理文件,我们要想让它变成在DOS中任意路径都可以执行的程序,那么我们就需要借助Winodws操作系统的环境变量path了。
Windows在DOS中执行可执行文件(也就是exe文件)的过程是,先看是否为系统内部命令,如果不是则在当前目录中寻找,如果找不到则再到环境变量的path中寻找,这样逐层寻找,如果均找不到则报错。那么PATH的作用也就自然出来了,它就是用来存放可执行文件路径,以便我们在任何路径中均可以象内部命令一样使用。
下面用一小段程序来说明上面的解释。
If(command 是系统内部命令)
执行;
Else if(command 是外部命令)
执行;
Else if(command 是当前目录中的可执行文件或批处理文件)
执行;
Else if(command 是环境变量中path中定义的路径中的exe程序)
执行;
Else
报错;
根据上面那个原理,所以我们在环境变量中的PATH选项中添加c:/java/jdk1.6/bin后,
我们就可以在DOS中任意的执行c:/java/jdk1.6/bin下的任何一个exe文件了,java.exe和javac.exe就可以随便执行了,环境变量设到这里,就完全可以编译、执行任何一个java程序了,也就是说,没有其它的需要我们也就结束了环境变量的设置了(个人认为!)。
三、CLASSPATH的作用
在先前提到了CLASSPATH的设置,这个主要是帮助我们使用java命令的时候,寻找不在当下目录中的文件的作用,原理和path是一样的,不详细解释了。本人觉得一般使用,不用这个也是可以的。
希望可以和大家交流这方面的知识,如果本文中提到什么不对的地方,请给我留言讨论。