【筆記】Java的路徑機制(CLASSPATH)

      回顧第一課中最簡單的程序HelloWorld.java,咱們首先在cmd命令行中進入HelloWorld.java所在的目錄,接着使用javac將HelloWorld.java轉換成HelloWorld.class,而後再使用java運行HelloWorld.class獲得程序的結果。這個過程當中發生了什麼?
      在這個過程當中,JAVA的編譯系統首先須要找到javac.exe、java.exe,是javac.exe將HelloWorld.java轉換成HelloWorld.classjava.exe運行HelloWorld.class,而這兩個exe文件在java的安裝目錄下。 java

      在尋找這兩個文件時,JAVA的編譯系統首先在HelloWorld.java的目錄中尋找,若未找到,則去環境變量記錄的路徑中尋找,在安裝java時咱們配置了環境變量,因爲設置了環境變量C:\Program Files\Java\jdk1.8.0_201\bin,因此能夠在HelloWorld.java的路徑裏中調用javac.exe和java.exe。
那麼JVM系統是怎麼尋找.class文件的呢?
      當在命令行輸入java HelloWorld,java編譯系統在找到了java.exe後,接着開始尋找HelloWorld.class文件,首先在當前目錄下尋找,若未找到則去CLASSPATH所記錄的路徑下尋找HelloWorld.class文件,若仍爲找到,則提示「找不到或沒法加載主類」

Java 解釋器運行CLASSPATH路徑中.class文件的工做程序

  • 首先,它找到環境變量CLASSPATH
          將Java 或者具備 Java 解釋能力的工具(如瀏覽器)安裝到機器(如PC機)中時,經過操做系統設定的CLASSPATH。
          CLASSPATH包含了一個或多個目錄,它們做爲一種特殊的「根」使用,從這裏展開對.class文件的搜索。
          從那個根開始,解釋器會尋找包名,並將每一個點號(句點)替換成一個斜槓,從而生成從CLASSPATH根開始的一個路徑名(因此package foo.bar.baz 會變成foo\bar\baz或者foo/bar/baz;具體是正斜槓仍是反斜槓由操做系統決定)。瀏覽器

  • 隨後將它們鏈接到一塊兒,成爲CLASSPATH內的各個條目(入口)。
           之後搜索.class文件時,就可從這些地方開始查找與準備建立的類名對應的名字。此外,它也會搜索一些標準目錄——這些目錄與 Java 解釋器駐留的地方有關。工具

特殊的地方

      使用 JAR文件時要注意一個問題,必須將JAR文件的名字置於類路徑裏,而不單單是它所在的路徑。
      因此對一個名爲tonls.jar 的 JAR文件來講,咱們的類路徑須要包括jar文件,以下爲我本身的CLASSPATH,tools.jar和dt.jar的jar文件也包含在CLASSPATH中,而C:\Users\engineer\Desktop\JavaLearning只包含到文件夾:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;C:\Users\engineer\Desktop\JavaLearning;操作系統

理解了java編譯系統尋找文件的機制,便可輕鬆理解package和import的設計,下節課介紹package和import命令行

相關文章
相關標籤/搜索