Java 是最新版本 macOS 上的可选包。
然而,一旦安装它似乎 JAVA_HOME 环境变量设置不正确。
安装 Java optional package 或 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 /Library/Java/JavaVirtualMachines/openjdk.jdk
以使上述操作生效
更新:基于 Jilles van Gurp response 添加了 -v 标志。
/usr/libexec/java_home
不是目录,而是可执行文件。它输出当前配置的 JAVA_HOME 并且实际上并没有改变它。这就是 Java Preferences 应用程序的用途,在我的情况下,它似乎已损坏并且实际上并没有正确更改 JVM。它确实列出了 1.7 JVM,但我可以切换/取消切换 &在不实际更改 /usr/libexec/java_home
的输出的情况下将我想要的所有内容拖放到那里。
即使在 Lion 上从 Oracle 安装 1.7.0 u6 并将其设置为首选项中的默认值后,它仍然返回苹果 1.6 java 主页。实际上对我有用的唯一修复是手动设置 JAVA_HOME:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
至少以这种方式从命令行运行时它将使用 1.7。 /usr/libexec/java_home
仍然坚持 1.6。
更新:Understanding Java From Command Line on OSX 对其工作原理有更好的解释。
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
是这样做的方法。请注意,将其更新到 1.8 就可以了。
对我来说,Mountain Lion 10.8.2,投票最多的解决方案不起作用。我通过 Oracle 和自制软件安装了 jdk 1.7。
我的解决方案来自我从自制软件安装的 hadoop-env.sh 文件。我在 ~/.bash_profile 中添加了以下句子,它可以工作。
export JAVA_HOME="$(/usr/libexec/java_home)"
此解决方案也适用于从 Oracle 安装 Java 1.8 的 OS X Yosemite。
export JAVA_HOME="$(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"
以上答案都没有帮助我。我想所有的答案都是针对年长的OS X
对于 OS X Yosemite 10.10,请按照以下步骤操作
使用您喜欢的文本编辑器打开:~/.bash_profile
//This command will open the file using vim
$ vim ~/.bash_profile
在文件中添加以下行并保存( : 后跟 "x" 用于 vim):
export JAVA_HOME=$(/usr/libexec/java_home)
然后在终端中键入以下两个命令以查看输出:
$ source ~/.bash_profile
$ echo $JAVA_HOME
在第二行中,您正在更新 .bash_profile
文件的内容。
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'
在终端测试:
% j8
% java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
% j9
% java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
编辑:Java 10 的更新
export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
编辑:Java 11 的更新
export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
以上内容不适用于我使用 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
/usr/libexec/java_home
有什么不同?命令 /usr/libexec/java_home 返回 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
以下对我有用。我在安装了 Java 8 的 OSX Yosemite 上使用 ZSH。
以下命令 /usr/libexec/java_home
发出 JDK 主目录的路径:
/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,因为它在 Home 下面有 bin
较新的 Oracle JVM,例如 1.7.0_21-b12 似乎安装在这里:
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
/usr/libexec/java_home
工具会为这些 Java 版本返回错误。
对于 macOS Mojave 10.14.1 和 JAVA 11.0.1,我将配置文件设置为
export JAVA_HOME=$(/usr/libexec/java_home)
在终端中键入以确认:
$JAVA_HOME/bin/java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
我的做法是:
.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 之间切换非常容易
我必须明确地将它设置为我的 Macbook air 上的确切路径。
后续步骤:
尝试回显 $JAVA_HOME (如果已设置,它将显示路径),如果没有,请尝试使用 sudo find /usr/ -name *jdk 搜索它 使用 - sudo nano ~/.bash_profile 编辑 Bash p 添加确切的JAVA Home 的路径(使用上述步骤 2 中的路径) export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 保存并退出 检查 JAVA_Home 使用 - echo $JAVA_HOME
我在带有 JAVA 8 的 Macbook Air 上运行 MACOS MOJAVE - 10.14.2 (18C54)
对于 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 Yosemite、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 或打开一个新终端
我认为 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 返回 JDK 的路径以及提供的版本,例如 1.7。我们还将 PATH 更新为指向新找到的 JAVA_HOME 目录的 bin 目录。最后,我们可以简单地使用
setjdk 1.7
它选择 1.7 分支的最新安装的 JDK 版本。要选择特定版本,您只需执行
setjdk 1.7.0_51
反而。运行 /usr/libexec/java_home -V 以获取有关如何选择版本的更多详细信息。
PS 保存后不要忘记 source ~/.bash_profile。
对于 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
对于 Java 11 (JDK 11),可以使用以下命令找到它:
/usr/libexec/java_home -v 11
这个答案与Mountain Lion有关,与Lion无关。我需要为 AWS 命令行工具执行此操作。根据 the AWS docs,运行 which java
会返回 /usr/bin/java
。
因此,我在 .bashrc
中设置了 JAVA_HOME=/usr
。
显然,/usr/bin/java
是指向 /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
的符号链接,这使得它可以正常工作。
更新
正如下面的评论中所提到的,当 AWS 命令行工具以外的东西要使用 JAVA_HOME
环境变量时,这个 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
爪哇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
对于 Mac Yosemite,
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 用户也不再需要它。啊!
只需在 netbeans.conf
文件中设置 1.8 jdk 版本的 java_home:
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
取消注释行:
netbeans_jdkhome="path/to/jdk"
并设置路径到你的 1.8 jdk,在我的例子中:
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
这种方法让您在 mac os 上拥有多个 jdk 版本
不定期副业成功案例分享