在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關掉之後就會消失了喔。
感謝william的說明,在unix的系統中如果要設定多個classpath,中間要用 : 隔開,可以參考下面這篇文章說的很清楚 : )
Managing the Java classpath (UNIX and Mac OS X)
有問題歡迎提出討論 :)
【相關閱讀】
PATH與CLASSPATH
Setting the Classpath
Classpath(Java) - Wiki
5 意見:
Windows 上面用 ';'
Unix 則要用 ':'
unix比較不熟,我找找資料補充上去 : )
我印象中
\lib\ext在較新的版本好像不用
他不再把那個目錄加到預設路徑
還是我記錯了^^"
喔喔這個我倒是沒有聽說,不過為了安全的考量這好像也不為過...。
google了一下好像也有人提過相同的疑問..
太好了!解決了我的問題。
張貼留言