The class path is the path that the Java runtime environment searches for classes and other resource filesjava
1,环境变量CLASSPATH
2,java/javac -cp 或者 -classpathapp
CLASSPATH的设定取决于你设定的对象,大体有三种场景:
1,对于jar或者zip文件(包含class文件),CLASSPATH须要设置为jar或zip文件全路径,例如:spa
java -cp /java/MyClasses/myclasses.jar utility.myapp.Cool
2,对于class文件中,没有首行package定义的class,CLASSPATH须要设置为改class文件所在的目录便可
3,对于class文件中,首行有明确package定义的class,CLASSPATH须要设置为package定义中包含root package的目录便可code
package是java文件中首行的定义,一般咱们会将java文件组织到一个package下面,而对于class文件而言,CLASSPATH就是包含package定义中的root package的目录!对象
若是CLASSPATH中存在通配符,例如ip
java -cp /java/libs/* utility.myapp.Cool
这样只会将/java/libs/目录下的以.jar或者.JAR结尾的文件做为CLASSPATH,并不会包含class文件。
可是若是想同时包含class文件和jar文件做为CLASSPATH,能够配置为it
java -cp /java/libs/*:/java/libs utility.myapp.Cool
其中:表明多个CLASSPATH之间的隔离符号io
当Java Launcher启动JVM后,JVM主要从三个地方寻找class:
1,Bootstrap classesclass
就是rt.jar和jre/lib目录下的其余几个jar包 "Bootstrap classes CLASSPATH是经过`sun.boot.class.path`这个系统参数设置的,通常不会修改"
2,Extension classes变量
jre/lib/ext目录下的几个jar包 "Extension classes CLASSPATH没有参数能够配置别的路径"
3,User classes
经过CLASSPATH指定的目录或者jar包
不要把任何Java核心库添加到CLASSPATH中!JVM根本不依赖CLASSPATH加载核心库!