Java是最新版本的macOS上的可选软件包。
但是,一旦安装,它看起来就像JAVA_HOME环境变量未正确设置。
Java是最新版本的macOS上的可选软件包。
但是,一旦安装,它看起来就像JAVA_HOME环境变量未正确设置。
Answers:
随着Java的可选包或甲骨文的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)"
更新:基于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并将其设置为首选项中的默认值之后,它仍然返回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。
更新:从OSX的命令行了解Java可以更好地解释它的工作原理。
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
是这样做的方法。注意,将其更新为1.8可以正常工作。
对我来说,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。
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
在文件中添加以下行并保存(vim::后跟“ x”):
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工具不起作用,因为它期望bin/java
下面的内容JAVA_HOME
。/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一起使用,因为它bin
位于Home下方
较新的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)
我不得不将其明确设置为Macbook air上的确切路径。
遵循的步骤:
echo $JAVA_HOME
(如果设置,它将显示路径),如果没有,请尝试使用进行搜索sudo find /usr/ -name *jdk
sudo nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/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 Runtime Environment 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 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不要忘记 保存〜/ .bash_profile。
此答案与山狮有关,与狮子无关。我需要针对AWS命令行工具执行此操作。根据AWS文档,运行which java
将返回/usr/bin/java
。
因此,我将其设置JAVA_HOME=/usr
为.bashrc
。
显然,它/usr/bin/java
是一个/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
使它全部起作用的符号链接。
更新资料
如以下注释中所述,JAVA_HOME
当JAVA_HOME
环境变量将由AWS Command Line Tools以外的其他设备使用时,此值不是理想的解决方案。但是,正如其文档中所给出的那样,它对于AWS Command Line Tools来说效果很好。
只需在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版本
对于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