OSX Sierra(10.12),El Capitan(10.11),Yosemite(10.10),Mavericks(10.9),Mountain Lion(10.8)还是OSX Lion(10.7)的JAVA_HOME在哪里?
Java是最新版本的OSX上的可选软件包。
但是一旦安装,看起来像JAVA_HOME环境variables没有正确设置 。
通过安装Java可选包或Oracle JDK ,将以下某行添加到〜/ .bash_profile文件中将相应地设置环境variables。
export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)" or export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)" or export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)" 更新:基于Jilles van Gurp的 回应添加-v标志。
  /usr/libexec/java_home不是一个目录,而是一个可执行文件。 它输出当前configuration的JAVA_HOME并不实际改变它。 这是什么Java首选项应用程序是在我的情况下,似乎打破,并没有真正改变JVM的正确。 它没有列出1.7 JVM,但是我可以切换/解开并拖放所有我想要的,而不需要实际改变/usr/libexec/java_home的输出。 
即使在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/ 
 至less从命令行运行时,它将使用1.7。  /usr/libexec/java_home仍坚持1.6。 
更新 : 在OSX上从命令行了解Java有一个更好的解释如何工作。
 export JAVA_HOME=`/usr/libexec/java_home -v 1.7` 
是做到这一点的方法。 请注意,更新到1.8工作得很好。
对于我来说,山狮10.8.2,最投票的解决scheme是行不通的。 我通过Oracle安装了jdk 1.7,并从自制软件安装了maven。
我的解决scheme是从我从homebrew安装的hadoop的hadoop-env.sh文件。 我在〜/ .bash_profile中添加下面的语句,它起作用。
 export JAVA_HOME="$(/usr/libexec/java_home)" 
此解决scheme也适用于从Oracle安装的Java 1.8的OS X Yosemite。
 没有上述的答案帮助我。 我想所有的答案都适用于较旧的OS X 
对于OS X Yosemite 10.10,请按照下列步骤操作
 使用你最喜欢的文本编辑器打开: ~/.bash_profile 
 //This command will open the file using vim $ vim ~/.bash_profile 
在文件中添加以下行并将其保存(:后跟vim的“x”):
 export JAVA_HOME=$(/usr/libexec/java_home) 
然后在terminal中input以下两条命令查看输出:
 $ source ~/.bash_profile $ echo $JAVA_HOME 
 在第二行中,您正在更新.bash_profile文件的内容。 
 以上这些对我来说不适用于Amazon的EC2工具,因为它预计在JAVA_HOME下的bin/java等等。  /System/Library/Frameworks/JavaVM.framework/Home确实工作。 
对于OS X你可以这样做:
 export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home` 
在Mac OS X Lion上,要设置visualgc运行,我使用:
 export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home 
以下为我工作。 我在安装了Java 8的OSX Yosemite上使用ZSH。
 以下命令/usr/libexec/java_home将发送到JDK主目录的path: 
 /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 
 在你的~/.zshrc , 
 export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home" 
更好(更可升级)的方法是使用以下内容:
 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home 
 这也应该与AWS一起工作,因为它在主页下方有bin 
较新的Oracle JVM如1.7.0_21-b12似乎在这里安装:
 /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 
我的做法是:
的.bashrc
 export JAVA6_HOME=`/usr/libexec/java_home -v 1.6` export JAVA7_HOME=`/usr/libexec/java_home -v 1.7` export JAVA_HOME=$JAVA6_HOME # -- optional # export PATH=$JAVA_HOME/bin:$PATH 
这使得在J6和J7之间切换非常容易
更新Java 9和一些整洁的别名。
 在.bash_profile : 
 export JAVA_HOME8=`/usr/libexec/java_home --version 1.8` export JAVA_HOME9=`/usr/libexec/java_home --version 9` 
 请注意,最新的版本是9而不是1.9 。 
设置活动的Java:
 export JAVA_HOME=$JAVA_HOME8 export PATH=$JAVA_HOME/bin:$PATH 
一些额外的别名在不同版本之间切换:
 alias j8='export JAVA_HOME=$JAVA_HOME8; export PATH=$JAVA_HOME/bin:$PATH' alias j9='export JAVA_HOME=$JAVA_HOME9; export PATH=$JAVA_HOME/bin:$PATH' 
terminaltesting:
%j8 %java -version java版本“1.8.0_121” Java(TM)SE运行时环境(build 1.8.0_121-b13) Java HotSpot(TM)64位服务器虚拟机(构build25.121-b13,混合模式) %j9 %java -version java版本“9” Java(TM)SE运行时环境(build 9 + 181) Java HotSpot(TM)64位服务器虚拟机(构build9 + 181,混合模式)
对于Mac OS X 10.9,我从Oracle安装了最新版本的JRE,然后将JAVA_HOME重置为/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home。
我相信有更好的方法,但让我起来和运行。
hughsmac:〜hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
OSX优胜美地,ZSH和Java SE运行时环境8,我不得不:
 $ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin 
 并在〜/ .zshrc中改变JAVA_HOME来export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current" 
升级我的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或者打开一个新的terminal 
我认为jdk版本可能会有所不同,所以只需使用您在/ Library / Java / JavaVirtualMachines /
如果您需要在Mac OS X(Yosemite)下拥有多个版本的JDK,可以添加一些脚本来自动切换它们。
你所做的是编辑你的〜/ .bash_profile并添加如下内容:
 function setjdk() { if [ $# -ne 0 ]; then removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin' if [ -n "${JAVA_HOME+x}" ]; then removeFromPath $JAVA_HOME fi export JAVA_HOME=`/usr/libexec/java_home -v $@` export PATH=$JAVA_HOME/bin:$PATH fi } function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") } setjdk 1.7 
脚本所做的是首先删除PATH中的其他JDK版本,以便它们不会干扰我们的新JDK版本。 然后使用/ usr / libexec / java_home ,这是一个列出已安装的JDK版本的命令。 -v参数告诉java_home返回提供版本的JDKpath,例如1.7。 我们还更新PATH以指向新find的JAVA_HOME目录的bin目录。 最后我们可以简单的使用这个函数来执行
 setjdk 1.7 
它select1.7分支的最新安装的JDK版本。 要select一个特定的版本,你可以简单地执行
 setjdk 1.7.0_51 
代替。 运行/ usr / libexec / java_home -V以获取有关如何select版本的更多详细信息。
PS不要忘了在保存之后再发送〜/ .bash_profile 。
对于Mac优胜美地,
JDK 1.7.0_xx正在使用
 $ ls -ltar /usr/bin/java /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home 
任何使用澳大利亚税务局(ATO)的AUSKEY的人都应该卸载AUSKEY。 这整理了我的JAVA_HOME问题。
MAC用户也不再需要它。 呀!
 这个答案与山狮而不是狮子有关。 我需要为AWS命令行工具执行此操作。 根据AWS文档 ,运行which java返回/usr/bin/java 。 
 所以,我在我的.bashrc设置了JAVA_HOME=/usr 。 
 很显然, /usr/bin/java是一个到/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java的符号链接,这使得它一切正常。 
更新
 正如在下面的注释中提到的,当JAVA_HOME环境variables被AWS命令行工具以外的东西使用时,这个JAVA_HOME值不是理想的解决scheme。 但对于AWS命令行工具,它正常工作,正如在他们的文档中给出的那样。 
为mac用户。 java 8应该添加
 export JAVA_HOME=`/usr/libexec/java_home -v 1.8` # JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 
java 6:
 export JAVA_HOME=`/usr/libexec/java_home -v 1.6` # JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 
ref: http : //qiita.com/seri_k/items/e978c1339ce51f13e297