举个例子:如果引用一个名为Button的类,java在编译时编译器将从目录classpath中去寻找类Button,classpath是事先设定的环境变量,比如可以设为:classpath=.;d:/jdk1.6/lib/。 classpath顾名思义就是类路径,需要提醒大家注意的是,在classpath中往往包含多个路径,用分号隔开。例如classpath=.;d:/jdk1.6/lib/中的第一个分号之前的路径是一个点,表示当前目录,分号后面的路径是d:/jdk1.6/lib/,表示系统的标准类库目录。在编译过程中寻找类时,先从环境变量classpath的第一个目录开始往下找,比如先从当前目录往下找类Button时,编译器找不着,然后从环境变量classpath的第二个目录开始往下找,就是从系统的标准类库目录d:/jdk1.6/lib开始往下找Button这个类,最后就找到了。
如果程序中用到了用户自己定义的包中的类,假如在上面程序中要用到work.new包中的类Hello,而包work.new所对应的目录是f:/project/work/new,classpath仍旧是classpath=.;d:/jdk1.3/lib/,则编译器在编译时将首先从当前目录寻找包work.new,结果是没有找到;然后又从环境变量classpath的第二个目录d:/jdk1.6/lib/开始往下找,但是仍然没有找到。原因在于包work.new是放在目录f:/project下面。因此,需要重新设定环境变量classpath,设为classpath=.;d:/jdk1.6/lib/;f:/project/ 。所以编译器从f:/project开始找包work.new就可以找到。