Java是最新版本的macOS上的可選軟件包。 java
然而,一旦安裝,它看起來就像JAVA_HOME環境變量未正確設置 。 bash
/usr/libexec/java_home
不是目錄,而是可執行文件。 它輸出當前配置的JAVA_HOME,而且實際上不更改它。 這就是Java Preferences應用程序的用途,在我看來,它彷佛已損壞,實際上並未正確更改JVM。 它確實列出了1.7 JVM,可是我能夠切換/取消拖動並拖放全部想要的內容,而無需實際更改/usr/libexec/java_home
的輸出。 app
即便在Lion上從Oracle安裝1.7.0 u6並將其設置爲首選項中的默認值以後,它仍然返回apple 1.6 java home。 對我來講真正有效的惟一解決方法是手動設置JAVA_HOME: 工具
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
至少從命令行運行時,它將使用1.7。 /usr/libexec/java_home
仍然堅持1.6。 oop
更新 : 從OSX的命令行了解Java能夠更好地解釋它的工做原理。 spa
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
是這樣作的方法。 注意,將其更新爲1.8能夠正常工做。 命令行
一種更好的(更可升級的)方法是使用如下方法: code
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
這也應該與AWS一塊兒使用,由於它在Home下面有bin
hadoop
此答案與山獅有關,與獅子無關。 我須要針對AWS命令行工具執行此操做。 根據AWS文檔 ,運行which java
返回/usr/bin/java
。 文檔
所以,我在.bashrc
設置了JAVA_HOME=/usr
。
顯然, /usr/bin/java
是/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
的符號連接, /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
這些均可以正常工做。
更新資料
以下面的註釋中所述,當JAVA_HOME
環境變量將由AWS Command Line Tools之外的其餘東西使用時,此JAVA_HOME
值不是理想的解決方案。 可是,正如其文檔中所給出的那樣,它對於AWS Command Line Tools來講效果很好。
對我來講,Mountain Lion 10.8.2,投票最多的解決方案不起做用。 我經過Oracle和Maven從Homebrew安裝了jdk 1.7。
個人解決方案也來自我從自制軟件安裝的hadoop的hadoop-env.sh文件。 我在〜/ .bash_profile中添加如下句子,它能夠正常工做。
export JAVA_HOME="$(/usr/libexec/java_home)"
該解決方案還適用於從Oracle安裝Java 1.8的OS X Yosemite。
升級Mac OS並遇到如下問題後,出現了相同的問題:
cmd> vi〜/ .bash_profile
添加/更新JAVA_HOME的行:export JAVA_HOME =「 / Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home」
cmd> source〜/ .bash_profile或打開一個新終端
我認爲jdk版本可能會有所不一樣,所以只需使用/ Library / Java / JavaVirtualMachines /下的版本便可