Java是最新版本的macOS上的可选软件包。 java
然而,一旦安装,它看起来就像JAVA_HOME环境变量未正确设置 。 bash
/usr/libexec/java_home
不是目录,而是可执行文件。 它输出当前配置的JAVA_HOME,而且实际上不更改它。 这就是Java Preferences应用程序的用途,在我看来,它彷佛已损坏,实际上并未正确更改JVM。 它确实列出了1.7 JVM,可是我能够切换/取消拖动并拖放全部想要的内容,而无需实际更改/usr/libexec/java_home
的输出。 app
即便在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/
至少从命令行运行时,它将使用1.7。 /usr/libexec/java_home
仍然坚持1.6。 oop
更新 : 从OSX的命令行了解Java能够更好地解释它的工做原理。 spa
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
是这样作的方法。 注意,将其更新为1.8能够正常工做。 命令行
一种更好的(更可升级的)方法是使用如下方法: code
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
这也应该与AWS一块儿使用,由于它在Home下面有bin
hadoop
此答案与山狮有关,与狮子无关。 我须要针对AWS命令行工具执行此操做。 根据AWS文档 ,运行which java
返回/usr/bin/java
。 文档
所以,我在.bashrc
设置了JAVA_HOME=/usr
。
显然, /usr/bin/java
是/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
的符号连接, /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
这些均可以正常工做。
更新资料
以下面的注释中所述,当JAVA_HOME
环境变量将由AWS Command Line Tools之外的其余东西使用时,此JAVA_HOME
值不是理想的解决方案。 可是,正如其文档中所给出的那样,它对于AWS Command Line Tools来讲效果很好。
对我来讲,Mountain Lion 10.8.2,投票最多的解决方案不起做用。 我经过Oracle和Maven从Homebrew安装了jdk 1.7。
个人解决方案也来自我从自制软件安装的hadoop的hadoop-env.sh文件。 我在〜/ .bash_profile中添加如下句子,它能够正常工做。
export JAVA_HOME="$(/usr/libexec/java_home)"
该解决方案还适用于从Oracle安装Java 1.8的OS X Yosemite。
升级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或打开一个新终端
我认为jdk版本可能会有所不一样,所以只需使用/ Library / Java / JavaVirtualMachines /下的版本便可