由于很多Java初学者都对classpath和path的概念模糊,我阅读了众多书籍,相关书籍有<<java编程基础>>,<<java2技术内幕>>,<<Cisco Networking Academy Program Fundamentals of Java Programming>>希望对他们有帮助!!
到目前为止,我们在实验室中创建的类都放在一个指定的目录下.实验指定了一个工作目录,这个目录叫做确省目录.我们创建的源文件存储在这个目录下,生成的类文件也存储在这个目录下,你在这个确省的包中工作!
当一个源代码文件编写完后,我们通常叫他一个编译单元,每个源代码文件或编译代码的文件名都必须以.java文件名为后缀.在这个编译单元中,只能有一个public 的类的定义,但可以有一个或多个的非public类定义.当你编译源文件时,源文件的每个类都会产生一个相应的类文件(以class为后缀),java编译器和解释器负责查找,载入和解释这些类文件.
要理解类定位的概念,你必须理解一些path 和classpath的相关重要的概念.所有的操作系统都利用变量来存储目录名,而这些目录正是用户试图载入或启动程序的时候需要查找的地方!在java运行环境中,有两个变量会影响到类文件和和JDK程序的访问,这就是path和classpath.
术语"路径"用来表示程序查找一个文件的位置时所用到的一系列的指定的目录!比如说,在windows系统中,java编译器和java解释器的程序文件分别为javax.exe和java.exe.这两个文件通常存储在你的jdk的bin目录下,对于某些特定的平台,path变量是一个操作系统的变量,它所包含的路径指向众多的可执行文件所存在的目录.计算机上面的操作系统通过这些路径来查找需要运行的可执行文件.
比如说,要保证操作系统能找到javac.exe和java.exe,这两个文件都在你的jdk\bin目录下,就需要添加到path 变量中去.java编译器和解释器使得变量classpath 来定位类和包.classpath变量可以获得很多条包含包的目录路径.jdk目录结构包含一些被自动来查找类的子目录,这些就是所谓的标准目录,而且这些目录就不需要定义在classpath变量中.你可以把类文件保存在这些目录中的一个,例如,jdk1.3\jre\classes就是一个能自动找到的标准目录.其中classes是我自己新建的目录!你可以把自己的类文件放到这!
但我建议不这样做,类文件应该通过程序员创建的目录结构来治理.
由于创建的类大多数情况下总是存储在相互分开的目录中,classpath变量必须包含到达这些目录的路径.命令CLASSPATH=d\javacourse\lab在操作系统级别为classpath变量赋值.
载入类的时候,需要查找的额是确省目录和显示定义的包的目录.他的执行顺序为:
1,在标准目录下查找文件;
2,在当前的工作目录下查找所有的文件.在大多数的操作系统中,(.)符号表示当前的工作目录.有些书中有介绍!
3,使用classpath变量定义的目录路径来查找文件,程序员必须在classpath变量中显示的指定他们将要查找的目录路径.
4,在类的包声明语句所声明的包中查找文件,只在classpath变量所指定的目录下查找这些包.
补充:
1,标准类有java.lang包,你部需要非凡的指定这个包的位置;
2,在当前目录(确省目录)下查找,注重是确省目录,他会在确省目录中查找所有文件的第一个!
3,显示查找包的声明,简单的说就是我们在java语言中用import所引入的类或者说我们在classpath中用(.)所表示的当前的类.
4,对编译器带有-classpath选项的调用提供了一个指向确省目录的类路径!
同时也可以用-cp选项来声明一个指定的classpath以供解释器使用!!
例如:javac -classpath.huiwu917.java
java -cp.huiwu917
注重使用编译器和-classpath选项以及-cp选项时,classpath变量可以被覆盖掉!!