2012-02-17 93 views
8

我想了解classpath是如何工作的。各地的網絡搜索後,這是我迄今達成:Java類路徑 - Linux

我已經加入

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

/etc/environment。順便說一句,我正在運行Ubuntu。

Java找到路徑並編譯沒有問題。

問題是,如果我更改CLASSPATH,然後執行:source /etc/environment,則不應用新的CLASSPATH。當且僅當我重新啓動系統時才應用它。例如,如果我刪除

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

線,然後我做源的/ etc /環境,我終於做echo $CLASSPATH,我得到的是/home/foo:/home/foo/Java_code/my_code。我想我應該得到一個空白的線,不是嗎?

有沒有辦法在PATH或CLASSPATH變量中立即應用更改,而無需重新啓動系統?

它可以幫助你知道/ etc/environment文件最初僅包含以下行:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 

謝謝您的時間。

+0

你如何刪除類路徑? – 2012-02-17 14:08:10

+0

你爲什麼要做所有的事情,你的環境是什麼?/etc/environment用於爲圖形應用程序定義環境變量。如果你有圖形,你可以使用IDE。爲什麼要把所有這些麻煩都包括在你的home文件夾+項目的classpath中? – hovanessyan 2012-02-17 14:09:01

+0

我只是試圖永久設置CLASSPATH,以便從特定文件夾導入包,而無需在每次運行javac時定義它。 – tomatoeggs 2012-02-17 14:13:01

回答

5

我認爲你不應該在系統範圍的文件中放置任何本地路徑到你的主目錄。除非您提供一些對所有用戶都有必要或有益的更改,否則我會離開/etc/environment。 對主目錄中的.bashrc進行CLASSPATH更改。

CLASSPATH=$CLASSPATH:/home/foo:/home/foo/Java_code/my_code 
    export CLASSPATH 

這樣你就可以獲得它,任何新開始的bash都將立刻擁有設置。

+1

它工作得很好。現在一切似乎都很順利。感謝您的幫助。 – tomatoeggs 2012-02-17 15:03:48

2

當您刪除

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

行,然後source ...,因爲它已經被設置不會刪除CLASSPATH。它不清除已經定義的變量。

+0

所以唯一的方法是重新啓動我的系統,以便應用新的CLASSPATH? – tomatoeggs 2012-02-17 14:14:12

+0

您可以在您的'〜'directoy的'.bashrc'文件中放置'export CLASSPATH =「/ home/foo:/ home/foo/Java_code/my_code」 '以在每次登錄時設置變量。要取消設置CLASSPATH變量,請'unset CLASSPATH' – 2012-02-17 14:17:01

+0

謝謝Sapan。你的評論真的幫了我。現在一切都很順利。 – tomatoeggs 2012-02-17 15:05:01

1

/etc/environment文件不是普通的shell腳本;它不會在啓動或登錄到系統時作爲外殼腳本執行。因此使用source /etc/environment運行它與正常啓動系統時不一樣。

參見:Ubuntu environment variables

/etc/environment - 該文件特別是指全系統環境變量設置。 它不是腳本文件,而是由賦值表達式組成,每行一個。具體而言,該文件存儲系統範圍的區域設置和路徑設置。

+0

謝謝Jesper。你的信息真的很有價值。 – tomatoeggs 2012-02-17 15:05:43

4
export CLASSPATH="" 

或更好

unset CLASSPATH 

將刪除現有的類路徑。有多個位置可以設置或取消設置類路徑 - 缺少的條目不會取消設置。