首页 > 代码库 > 001_java开发中配置环境变量的含义

001_java开发中配置环境变量的含义

在学习java的时候需要配置环境变量,但是为什么需要配置path和classpath这2个环境变量呢?
    (1) 首先,搞起清楚path这个环境变量的作用。我们cmd到dos命令窗口的时候,输入ipconfig。
        其实它调用的是存放在某个目录下面的ipconfig.exe程序,那么操作系统如何知道ipconfig程序存放在哪个目录下的呢?
        这时候我们用set path的命令,就能看到很多目录,用;隔开。(如下所示)
        #################################################
        Path=D:\oracle\product\10.2.0\db_1\bin;E:\devSoft\Java\jdk1.6.0_26/bin;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows
        ;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;E:\devSoft\TortoiseGit\bin;E:\devSoft\TortoiseSVN\bin;E:\devSoft\Git\bin;E:\data
        bases\mysql5\bin;E:\devSoft\python;E:\devSoft\Subversion\bin\bin;E:\AppServ\Apache2.2\bin;E:\AppServ\php5;E:\AppServ\MySQL\bin;E:\javaEELib\apache-mav
        en-3.1.1\bin;E:\devSoft\python;D:\soft\DBank\ClickUp;D:\soft\DBank\ClickUp;E:\devSoft\Subversion\bin
        PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
        #################################################
        它会先去D:\oracle\product\10.2.0\db_1\bin这个目录下面去找ipconfig程序,如果没找到,一直往下找,以此类推,把所有的目录都找一遍。
        如果一直找不到则报错,找到了就执行程序。
        那么我们将%JAVA_HOME%配置到path中也是这个原因,这样的话,我们就能调用%JAVA_HOME%/bin该目录下面的java.exe和javac.exe程序了。
        
    (2) 当我们执行“java Test”这样的命令时,会启动Java虚拟机,java虚拟机会寻找一个名为Test.class的文件,
        然后由类装载器装载这个类,那么问题就是类装载器究竟要到哪个目录里去寻找Test.class这个文件呢?
        这个时候classpath就起作用了,classpath值的设置方式和path类似,
        都是一系列的目录(当然还可能包括jar文件,其实jar文件也是目录,目录里面有很多的class文件),
        java虚拟机就是到这些目录当中去寻找所需要的class文件。
        我们使用set classpath的命令,可以看到我们设置的classpath值。(如下所示)
        #################################################
        CLASSPATH=.;E:\devSoft\Java\jdk1.6.0_26\lib;E:\devSoft\Java\jdk1.6.0_26\lib\dt.jar;E:\devSoft\Java\jdk1.6.0_26\lib\tools.jar
        #################################################
        比如说在我的c:\src目录当中有一个Test.java文件,编译过后生成了Test.calss文件。
        这个时候我们想执行这个文件,就要执行“java Test”命令,类装载器会从classpath所指定的目录当中去寻找Test.class这个文件,
        如果在classpath所指定的第一个目录当中没有找到,就到第二个目录去找,直到找到为止,如果在所有的目录当中都没有找到,就会报出一个错误。
        在一般的教科书上,都会让学生把classpath的值设置为“.”,这是因为“.”代表的是当前目录,什么叫当前目录呢?
        #################################################
        C:\src>java Test
        #################################################
        当打开命令行时,在“>”之前的目录就是当前目录,也就是说在c盘的src这个目录下执行“java Test”命令,
        java虚拟机的类装载器就会在c:\src下寻找Test.class文件。