[英]An easy question about java and environment variables in ubuntu
我已經安裝了帶有Java的Ubuntu 10.10。 我可以從任何文件夾執行Java命令。 我以為那可能是因為我設置了Java Classpath。 但是既未設置JAVA_HOME也未設置CLASSPATH。
如果查看/ etc / environment內容,則可以看到PATH設置為/ usr / bin /(以及其他)。 由於“ which java
”返回/ usr / bin / java,這是我可以從任何地方執行Java的原因嗎? 如果沒有,為什么呢?
您可以執行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
之所以不那么受歡迎的一個原因是,要訪問JAVA_HOME
您需要運行一個shell,而不是每個人都希望將每個Java項目都包裝在shell命令中。
是的,如果路徑中列出的文件夾中有Java二進制文件(或指向它的鏈接),那么您可以執行Java而無需指定其路徑(例如/usr/local/java/latest/bin/java -jar x.jar
)JAVA_HOME和CLASSPATH與系統路徑無關。 JAVA_HOME允許其他軟件(或腳本)知道在哪里尋找Java安裝。 CLASSPATH告訴Java在哪里尋找類(編譯.java文件產生的.class文件)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.