JAVA_HOME在MacOS Mojave(10.14)到Lion(10.7)的哪里?

Oli*_*alo 544 java macos

Java是最新版本macOS上的可选包.

然而,一旦安装,似乎JAVA_HOME环境变量设置不正确.

Oli*_*alo 1043

随着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)"
Run Code Online (Sandbox Code Playgroud)

更新:添加-v标志基于Jilles van Gurp 响应.

  • 这对我不起作用./System/Library/Frameworks/JavaVM.framework/Home工作. (11认同)
  • 也适用于Maverick! (7认同)
  • 确认这适用于Mountain Lion. (3认同)
  • 为什么 /usr/libexec/java_home -V 没有显示我刚刚安装的 java 1.8 并且在 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin 上可用 (2认同)
  • 对于Java 11和High Sierra,导出JAVA_HOME =“ $(/ usr / libexec / java_home -v 11)” (2认同)

Jil*_*urp 106

/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/
Run Code Online (Sandbox Code Playgroud)

至少这种方式从命令行运行时它将使用1.7./usr/libexec/java_home仍然坚持1.6.

更新:在OSX上了解Java命令行可以更好地解释其工作原理.

export JAVA_HOME=`/usr/libexec/java_home -v 1.7` 
Run Code Online (Sandbox Code Playgroud)

是这样做的方式.注意,将此更新为1.8工作正常.


小智 81

对我来说,Mountain Lion 10.8.2,最投票的解决方案不起作用.我通过Oracle和maven从homebrew安装了jdk 1.7.

我的解决方案来自我自己安装的hadoop的hadoop-env.sh文件.我在〜/ .bash_profile中添加了下面的句子,它有效.

export JAVA_HOME="$(/usr/libexec/java_home)"
Run Code Online (Sandbox Code Playgroud)

此解决方案也适用于从Oracle安装的Java 1.8的OS X Yosemite.

  • 这对Mavricks非常有用,但java_home脚本的位置不同.`export JAVA_HOME ="$(/ System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home)"` (2认同)

Gir*_*iri 39

上述答案都没有帮助我.我想所有答案都适合年龄较大的人OS X

对于OS X Yosemite 10.10,请按照下列步骤操作

使用您喜欢的文本编辑器打开: ~/.bash_profile

//This command will open the file using vim
$ vim ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

在文件中添加以下行并保存(:对于vim,后跟"x"):

export JAVA_HOME=$(/usr/libexec/java_home)
Run Code Online (Sandbox Code Playgroud)

然后在终端中输入以下两个命令来查看输出:

$ source ~/.bash_profile

$ echo $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

在第二行中,您将更新.bash_profile文件的内容.

  • 这是唯一真正有效的解决方案.通过任何其他解决方案添加路径,将临时添加,直到您终止终端,并且路径消失.要永久添加,必须将路径保存在.bash_profile文件中.同时,为了简单起见,我使用的是nano而不是vim. (2认同)

Pet*_*ler 31

更新Java 9和一些简洁的别名.

.bash_profile:

export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
export JAVA_HOME9=`/usr/libexec/java_home --version 9`
Run Code Online (Sandbox Code Playgroud)

请注意,对于最新版本,它是否9存在1.9.

设置活动Java:

export JAVA_HOME=$JAVA_HOME8
export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

在不同版本之间切换的一些额外别名:

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'
Run Code Online (Sandbox Code Playgroud)

终端测试:

% 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)
Run Code Online (Sandbox Code Playgroud)

编辑:Java 10的更新

export JAVA_HOME10=`/usr/libexec/java_home --version 10`
alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
Run Code Online (Sandbox Code Playgroud)

编辑:Java 11的更新

export JAVA_HOME11=`/usr/libexec/java_home --version 11`
alias j11='export JAVA_HOME=$JAVA_HOME11; export PATH=$JAVA_HOME/bin:$PATH'
Run Code Online (Sandbox Code Playgroud)


小智 29

以上对于我使用亚马逊的EC2工具不起作用,因为它预计会bin/java在下面等JAVA_HOME./System/Library/Frameworks/JavaVM.framework/Home做得好.


suf*_*waz 18

对于OS X,您可以:

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`
Run Code Online (Sandbox Code Playgroud)


EGH*_*GHM 14

在Mac OS X Lion上,要设置visualgc运行,我使用:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
Run Code Online (Sandbox Code Playgroud)

  • 这个建议适用于Mountain Lion 10.8.谢谢! (5认同)

小智 13

以下对我有用.我在安装了Java 8的OSX Yosemite上使用ZSH.

以下命令将/usr/libexec/java_home发出JDK home的路径:

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

在你的~/.zshrc,

export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
Run Code Online (Sandbox Code Playgroud)


小智 10

更好(更可升级)的方法是使用以下方法:

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Run Code Online (Sandbox Code Playgroud)

这应该适用于AWS,因为它bin位于Home下面


Arc*_*hie 10

较新的Oracle JVM(如1.7.0_21-b12)似乎安装在此处:

/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

  • 如果安装JRE,这是路径.大多数评级的答案和评论都与JDK有关.不一样的事情. (2认同)

Jiu*_*hao 8

对于macOS Mojave 10.14.1和JAVA 11.0.1我将配置文件设置为

export JAVA_HOME=$(/usr/libexec/java_home)
Run Code Online (Sandbox Code Playgroud)

键入终端此确认:

$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)
Run Code Online (Sandbox Code Playgroud)


Mik*_*rer 5

我的方法是:

的.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
Run Code Online (Sandbox Code Playgroud)

这使得在J6和J7之间切换变得非常容易

  • 在OSX Mavericks中,这些都不适合我. (3认同)

小智 5

我必须将其明确设置为我的 Macbook Air 上的确切路径。

步骤如下:

  1. 尝试echo $JAVA_HOME(如果已设置,它将显示路径),如果没有,请尝试使用搜索它sudo find /usr/ -name *jdk
  2. 使用 - 编辑 Bash psudo nano ~/.bash_profile
  3. 添加 JAVA Home 的确切路径(使用上面第 2 步中的路径) export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
  4. 保存并退出
  5. 使用 - 检查 JAVA_Homeecho $JAVA_HOME

我在装有 JAVA 8 的 Macbook Air 上运行 MACOS MOJAVE - 10.14.2 (18C54)