關於javac和java
1、為什麽安裝完jdk後不配置環境變量就能直接運行java,而不能運行javac
在安裝jdk的時候jdk會自帶一個jre(java運行環境),還會單獨安裝一個jre,默認路徑是和jdk在同級目錄,而且會將這個jre/bin/java.exe拷貝一份到C:\Windows\System32\目錄中,而這個目錄在系統安裝的時候就被配置到了環境變量中,所以能運行java。
不能運行javac是因為javac.exe是位於%JAVA_HOME%\bin目錄下面,這個可執行文件沒有被配置到環境變量PATH中;
2、為什麽配置CLASSPATH系統變量
CLASSPATH系統變量為類查找路徑
1、在使用javac進行編譯時遇到import時候就會通過這個變量裏面配置的路徑去查找。如果配置的是目錄,則會查找目錄下的.class或.java(.java會自動編譯出.class)的類文件,如果是.jar文件,則會引用.jar中的類,也可以通過javac -cp 進行指定CLASSPATH
2、使用java運行java程序的時候import類的查找順序為
jre/lib中的*.jar,或被-Xbootclasspath參數指定的路徑中的.jar(由啟動類加載器加載)
jre/lib/ext子孫目錄中的.class和子文件中的*.jar文件,或者由java.ext.dirs系統變量指定的目錄和文件(擴展類加載器加載)
CLASSPATH中配置目錄的子孫目錄中的.class和配置的.jar中的類(應用程序類加載器加載)
3、問什麽CLASSPATH配置 “.;” 和;tools.jar
配置CLASSPATH的開頭使用.;表示在使用java或javac優先從當前目錄查找類資源;tools.jar 是系統用來編譯一個類的時候用到的,jps,javap,jstat,jstack等Java工具也使用到了tools.jar中的一些api,其實使用javac命令進行編譯的時候已經封裝了tools.jar,所以可以不用配置到CLASSPATH中;
關於javac和java