Java是macOS最新版本的可选包。
然而,一旦安装,JAVA_HOME环境变量似乎没有正确设置。
Java是macOS最新版本的可选包。
然而,一旦安装,JAVA_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之间切换非常容易
其他回答
如果你需要在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。
更新的Oracle jvm(如1.7.0_21-b12)似乎安装在这里:
/Library/Internet\ 插件/JavaAppletPlugin.plugin/Content/Home
安装Java可选包或Oracle JDK后, 在~/中添加下列行之一。Bash_profile文件将相应地设置环境变量。
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)"
or simply
export JAVA_HOME="$(/usr/libexec/java_home)"
注意:如果在mac上使用brew安装openjdk,请执行sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /图书馆/ Java / JavaVirtualMachines / openjdk。JDK为上述工作
更新:根据Jilles van Gurp的响应增加了-v标志。
方便的命令,知道java的家和其他细节。
java -XshowSettings:properties -version
为了了解mac上的所有Java home:
/usr/libexec/java_home -V
上面的方法对我来说在亚马逊的EC2工具中不起作用,因为它期望在JAVA_HOME下面的bin/java等。/System/Library/Frameworks/JavaVM.framework/Home可以工作。