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