標籤:ack jstack home 應用程式 變數 classpath 內建 擴充 安裝jdk
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