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后,遇到同样的问题,以下为我工作:

  1. cmd> vi〜/ .bash_profile

  2. 添加/更新JAVA_HOME的行:export JAVA_HOME =“/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home”

  3. 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