Java編程高手對CLASSPATH應用的詳細介紹

來源:互聯網
上載者:User
為了協助大家更好的學習JAVA的基本知識,同時也是鍛煉自己的Type水平,於是有了這篇文章的誕生。主要參考資料來自來自官方JDK文檔,希望對大家有用(所說的觀點針對1.4.2 and 5.0版本)。

  1. 預備知識

  1.1安裝JDK

  到http://java.sun.com 根據不同的作業系統,下載相應的J2SE JDK 版本 (寫這篇文章時最新的JDK 為1.5 update 7)。假定我們把JDK安裝到D:/JDK/1507 ,不安裝public JRE。

  1.2 設定path

  在[我的電腦]上右擊,選擇[屬性]。再選擇[進階]-[環境變數],在[系統變數]中添加一個新的變數

  JAVA_HOME=D:/JDK/1507,然後再編輯path變數,在原來的path前面添加[ %JAVA_HOME%/BIN; ]

  (方框中的文字)。這樣就完成了JAVA的基本設定。(windows 98 下如何在autoexec.bat 中設定,請自己找資料)

  1.3 示範程式

  為了協助理解,我寫了一個JavaBootTest.java 的小程式來顯示。

  

      public class JavaBootTest {

  public static void main(String[] args) {

  System.out.println(" The Classpath are: ");

  System.out.println(System.getProperty("java.class.path"));

  //other program lines

  }

  }

  用下面的兩條命令分別編譯和運行。

  javac JavaBootTest.java

  java JavaBootTest

  2. JAVA程式運行時如何尋找類檔案

  根據JDK 文檔說明, JAVA 程式以以下3種順序尋找啟動並執行類檔案。

1.Bootstrap classes (*)

  2.Extension classes

  3.Users classes

  2.1 Bootstrap classes

  就是JAVA在啟動時載入的類檔案,這些類檔案主要是rt.jar 和 jre/lib 目錄下的一些類檔案。Bootstrap過程中的class path是儲存在 sun.boot.class.path 系統屬性中的。可以通過System.out.println(System.getProperty("sun.boot.class.path")); 來顯示。同時Bootstrap classes 可以通過 -Xbootclasspath 命令列參數來指定。

  下面列出了系統中預設的Bootstrap classes:

  jre/lib/rt.jar; jre/lib/i18n.jar;

  jre/lib/sunrsasign.jar; jre/lib/jsse.jar;

  jre/lib/jce.jar; jre/lib/charsets.jar;

  jre/classes

  * Bootstrap

  bootstrap是皮鞋後部的一條小帶子或一個小環,它可以使你方便地把鞋子穿起來。在電腦中,是指使用一個很小的程式將某個特定的程式(通常是指作業系統)載入電腦中。

  2.2 Extension classes (擴充類檔案)

  Extension classes 主要是指的jre/lib/ext 目錄下的類檔案,這些檔案必須在jar 檔案或 zip 檔案中。如果不同名字的jar 檔案包含有相同的類檔案,那麼哪一個類檔案被載入是不確定的。

  2.3 User classes (使用者自訂的類檔案)

  現在到了最重要的地方了,我們常說的設定CLASSPATH 其實就是指定 User classes。JAVA 按照以下四種順序尋找User classes。

  2.3.1. 預設的User classes . (dot) 就是指目前的目錄。

  2.3.2. 系統變數 CLASSPATH 所指定的類庫,該變數覆蓋(override)預設的User classes。

  2.3.3. 用命令列參數 -cp 或 -classpath指定的類庫。這個時候覆蓋預設的User classes 和CLASSPATH變數。

  2.3.4. 通過-jar 參數指定的jar檔案。此時覆蓋上面的三種情況,如果使用這種情況,所有的類檔案必須來自指定的jar 檔案。

  瞭解了java如何尋找User classes,我們接下來將要學習如何設定 CLASSPATH變數。

  3 如何正確設定CLASSPATH

  如果只是一般運用java,只是用到java的基本庫檔案,練練手而已,則不需要設定CLASSPATH 。

 但是在一般開發情況下,這是很少遇到的。所以我們要自己設定CLASSPATH 。

  我們一般的方法就是按照2.3.2 來設定CLASSPATH 系統變數,像開始設定path一樣,我們可以添加一個CLASSPATH的系統變數。網上有些文章所提到的添加rt.jar 和 tools.jar 等等是不需要的,因為這些類庫是屬於Bootstrap classes的。我們只要定義User classes ,如果我們要編譯servlet 那麼只要servlet-api.jar 和 jsp-api.jar 就可以實現基本的需要了。

  另外要注意的是2.3.2 override 2.3.1。我們設定CLASSPATH 時要將 .(dot)[表示目前的目錄]放在CLASSPATH中,然後用 ;(semicolon)分隔開來。由於其他提供的類檔案都是放在jar檔案中,我們設定時一定要將完整的jar 檔案包含在CLASSPATH 中,而不是將其目錄添加到CLASSPATH 中(很重要的一點,我以前就是理解錯誤了)。

  這個時候又一個問題出現了,當需要添加的jar 檔案過多時,管理java 類庫變得很麻煩。所以我認為在基礎學習時用命令列編譯調試,有利於JAVA的學習,但是到開發時則一定要用到 IDE 工具(現在比較流行的是eclipse 和 netbeans ,還有些人喜歡 jcreator) 。

  在eclipse 中通過 [windows][Preferences][Java][Build Path]來指定。其中有兩部分Classpath Variables & User Libraries。如何設定在這裡就不詳細說明了,自己試一下就可以了,比較簡單。在建立項目時,把自己定義的變數添加到Build Path 中就可以了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.