Java是macOS最新版本的可选包。

然而,一旦安装,JAVA_HOME环境变量似乎没有正确设置。


当前回答

对于Mac上的Fish终端用户(我相信它也可以在Linux上使用),这应该可以工作:

set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8       //or whichever version you want as default

其他回答

对于Mac上的Fish终端用户(我相信它也可以在Linux上使用),这应该可以工作:

set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8       //or whichever version you want as default

如果你需要在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返回JDK提供版本的路径,例如1.7。我们还将PATH更新为指向新找到的JAVA_HOME目录的bin目录。最后,我们可以简单地使用

setjdk 1.7

它会选择最新安装的1.7分支JDK版本。要选择一个特定的版本,只需执行即可

setjdk 1.7.0_51

代替。运行/usr/libexec/java_home -V以获得关于如何选择版本的更多详细信息。

附注:不要忘记来源~/。保存后的Bash_profile。

这个答案与山狮有关,与狮子无关。我需要为AWS命令行工具这样做。根据AWS文档,运行哪个java会返回/usr/bin/java.

因此,我在。bashrc中设置了JAVA_HOME=/usr。

显然,/usr/bin/java是一个指向/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java的符号链接。

更新

正如下面的评论中提到的,当JAVA_HOME环境变量被AWS命令行工具以外的东西使用时,这个JAVA_HOME值并不是理想的解决方案。不过,它在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

裁判:http://qiita.com/seri_k/items/e978c1339ce51f13e297

对于OS X你可以这样做:

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home`