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加載核心庫!