Java 設定Classpath方法一覽!

Classpath在java的意義是「在執行階段JVM會去尋找classes或其他資源的路徑」。如果你的java程式有到外部的jar或其他人寫的class,在執行你的程式的時候就要告訴JVM要去哪裡找這些資源,也就是要設定classpath。

在Java中設定classpath的方法有很多,以下作個簡單的介紹:

(1) 將用到的jar檔案放到 {jre安裝目錄}\lib\ext 中
JVM在執行的時候會去這裡目錄下尋找需要的classes來load,如果你有需要import的jar檔案就可以丟進去。
(不過這並不是最好的方法,因為如果每個人都丟自己寫好得jar檔案進去,只會造成混亂。)

(2) 在執行的時候指定classpath
這應該是最常使用的方法,就是你在command line下指令的時候順便指定classpath。比如說:
java -classpath classpath1;classpath2 className

這裡的classpath有一些竅門,分成三部份來說:

前提:你現在想要執行的class是 pro1.class
  • 如果是要指定資料夾指定到該目錄下 (如果有設定package,則指定到該package最上層之上的目錄)。比如說你想要使用的class或jar都放在C:\source\classes\ 資料目錄下面,你可以下這樣的指令:java -classpath C:\source\classes pro1

  • 如果是要指定jar或zip:要把檔案名稱都寫出來。比如說你有一個myJAR.jar放在C:\source\classes\outerJAR\ 下面,在下指令的時候要打:java -classpath C:\source\classes\outerJAR\myJAR.jar pro1

  • 使用set classpath指令:在command line下輸入:set classpath=classpath1;classpath2; 接著再輸入java className 即可!注意這裡所設定的classpath只能在這一次的執行環境下使用,你把command line關掉之後就會消失了喔。
[UPDATE 2009/04/07]
感謝william的說明,在unix的系統中如果要設定多個classpath,中間要用 : 隔開,可以參考下面這篇文章說的很清楚 : )
Managing the Java classpath (UNIX and Mac OS X)


有問題歡迎提出討論 :)

【相關閱讀】
PATH與CLASSPATH
Setting the Classpath
Classpath(Java) - Wiki



Share this post!

Bookmark and Share

5 意見:

william 提到...

Windows 上面用 ';'
Unix 則要用 ':'

kevingo 提到...

unix比較不熟,我找找資料補充上去 : )

Chintown 提到...

我印象中
\lib\ext在較新的版本好像不用
他不再把那個目錄加到預設路徑
還是我記錯了^^"

kevingo 提到...

喔喔這個我倒是沒有聽說,不過為了安全的考量這好像也不為過...。

google了一下好像也有人提過相同的疑問..

朱昌森 提到...

太好了!解決了我的問題。