2011-06-24 60 views
0

我已經安裝了java的Ubuntu 10.10。我能夠從任何文件夾執行java命令。我認爲可能是因爲我設置了Java Classpath。但是JAVA_HOME和CLASSPATH都沒有設置。關於ubuntu中的java和環境變量的簡單問題

如果我看看/ etc/environment內容,我可以看到PATH被設置爲/ usr/bin /(等等)。由於'which java'返回/ usr/bin/java,這就是我可以從任何地方執行java的原因嗎?如果沒有,爲什麼呢?

+0

這可能更適合於[Unix.StackExchange](http://unix.stackexchange.com/)或[Ask Ubuntu](http://askubuntu.com/) –

回答

3

您可以執行java,因爲該命令在您的路徑上。

echo $PATH 

將向您顯示搜索哪些目錄,以查找特定程序的順序。由於/usr/bin在你的路上,所以當你輸入java時,它最終會看到/usr/bin/java。請注意,在許多系統中,這是一個符號鏈接(指向另一個文件的文件),因此/usr/bin/java通常指向/etc/alternatives/java(它也是指向真實可執行文件的符號鏈接)。

環境變量JAVA_HOME開始起作用的工具和程序檢查JAVA_HOME並採取行動,而不是依靠路徑。在大多數現代Linux系統中,替代子系統所做的工作取代了早期(更成問題)的技術。也就是說,你可能想要設置JAVA_HOME,如果你遇到需要它的工具。

爲什麼JAVA_HOME不像它可能會那麼受歡迎的一個原因是要訪問JAVA_HOME需要運行一個shell,而不是每個人都想在shell命令中包裝每個Java項目。

+0

所以答案是YES,謝謝! ! – de3

+1

@ de3,是的,答案是肯定的。抱歉忘記解釋中的明顯答案。 –

1

是的,如果java二進制文件(或其鏈接)位於路徑上列出的文件夾中,則可以在不指定路徑的情況下執行java(例如/usr/local/java/latest/bin/java -jar x.jar) JAVA_HOME和CLASSPATH無關與系統路徑。 JAVA_HOME允許其他軟件(或腳本)知道在哪裏查找Java安裝。 CLASSPATH告訴java在哪裏尋找類(編譯.java文件產生的.class文件)。