1.首先了解Java的环境配置:
转载:https://blog.csdn.net/u010297957/article/details/51334951
2.类路径是所有包含类文件的路径的集合:
在UNIX中,类路径中不同项目之间采用冒号(:)分隔:/home/user/classdir:.:/home/user/archive.jar
在Windows环境中,则以分号(;)分隔:c:\classdir;.;c:\archive.jar
.表示当前目录
类路径包括:基目录/home/user/classdir或c:\classdir;当前目录(.);jar文件/home/user/archives/archive.jar或c:\archives\archive.jar
从Java SE 6开始,可以在JAR文件目录中指定通配符,如下:
/home/user/classdir:.:/home/user/archives/'*'或者c:\classdir;.;c:\archives\*;
但是在UNIX中进制使用*防止shell命令进一步拓展
3.javac与jvm:
javac编译器总是在当前的目录中查找文件,但Java虚拟机仅在类路径中有“.”目录的时候才会查看当前目录,如果设置了类路径但忘记了包含“.”目录,则程序仍然可以编译,但是不能运行
4.jvm查找类文件的过程:
假设虚拟机要搜寻com.h.c.E类文件,首先检查存储在jre/lib和jre/lib/ext目录下的归档文件中所存放的系统类文件,然后看看类路径:/home/user/classdir/com/h/c/E.class ; com/h/c/E.class从当前目录开始 ; com/h/c/E.class inside /home/user/archives/archive.jar
5.编译器定位:
当引用一个类却没有指出这个类所在的包,那么编译器将首先查找包含这个类的包,并查询所有的import指令
编译器还会查看源文件是否比类文件新,如果是的话就会自动重新编译
6.设置类路径:
最好采用-classpath(或-cp)选项指定类路径:
java -classpath /home/user/classdir:.:/home/user/archive.jar MyProg
或者
java -classpath c:\classdir;.;c:\archives\archive.jar MyProy
也可以通过设置CLASSPATH环境变量完成操作
在Bourne Again shell(bash)中:export CLASSPATH=/home/user/classdir:.:/home/user/archives/archive.jar
在Windows shell中:set CLASSPATH=c:\classdir;.;c:\archives\archive.jar
6.1建议:
不要把CLASSPATH设置为永久不变的值