如何在Mac OS X 10.9上设置JAVA_HOME环境变量?

319

我刚买了一台全新的MacBook Pro。

这是我第一次使用MAC,我仍在努力适应它的导航方式。

无论如何,我对Java也是新手,在我的Windows PC永久死机之前一直在练习。

现在,我安装了JDK,现在需要设置JAVA_HOME环境变量。

我不知道该怎么做。

我尝试遵循一些指南,但没有成功。

  1. Mkyong.com:如何在Mac OSX中设置JAVA_HOME变量

  2. YouTube:如何在mac、linux、solaris、rhel上设置环境变量

  3. YouTube:如何在Mac中设置环境变量

我能够找到终端,并创建了一些多个文件。我收到了这样的消息:


(1) 另一个程序可能正在编辑相同的文件。 如果是这种情况,请注意在更改时不要得到两个 相同的文件实例,谨慎退出或继续。


(2) 此文件的编辑会话崩溃了。 如果是这种情况,请使用“:recover”或“vim -r /Users/Erwin/.bash_profile” 恢复更改(请参阅“:help recovery”)。 如果您已经这样做,请删除交换文件“/Users/Erwin/.bash_profile.sw p” 避免出现此消息。

有人可以告诉我如何逐步设置Mac OSX环境中的Java吗?


2
Java Home环境变量设置的副本:http://superuser.com/questions/240100/setting-java-home-environment-variable - Frank V
可能是在OSX上我应该将JAVA_HOME设置为什么的重复问题。 - Pascal
简要解释:这个答案提供了一个关于如何在Python中使用“yield from”语法的例子。它展示了如何使用嵌套生成器来处理复杂的迭代器,并且还提供了一些有用的提示和技巧,以便更好地理解和使用该语法。 - Shomu
1
在 M1 Mac 上通过 brew 安装后,我的 Java 路径为 /opt/homebrew/Cellar/openjdk/17.0.1_1/libexec/openjdk.jdk/Contents/Home。显然,您需要根据您的版本进行更改,但是通常查找路径的方法很困难,因此我希望这可以帮助其他人。 - Joshua Pinter
不要忘记在设置任何环境变量后重新启动Mac终端,否则你会继续看到未设置的值。 - Harish Aravind
18个回答

566

如果你正在使用bash,你只需要做到这一点:

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile

如果您正在使用zsh(这可能意味着您正在运行macOS Catalina或更新版本),则应该改为:

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.zshrc

无论哪种情况,都要重新启动你的shell。

如果你安装了多个JDK版本并且想要使用特定版本,你可以像这样使用-v选项来设置java_home

echo export "JAVA_HOME=\$(/usr/libexec/java_home -v 1.7)" >> ~/.bash_profile

3
当你说“shell”时,你是指我关闭终端窗口然后重新打开吗?另外,这是否会永久性地添加环境变量到我的jdk中? - islander_zero
33
如果你执行source ~/.bash_profile,那么不需要重新启动终端,这样行得通,对吗? - Shobhit Puri
5
没错,这样做是可以的,我只是想让提问者更容易理解。 - Adrian Petrescu
6
如果您需要特定版本,比如1.7,请执行以下命令:echo export "JAVA_HOME=\$(/usr/libexec/java_home -v 1.7)" >> ~/.bash_profile - sebastian
5
在OSX 11中,我们现在使用.zshrc代替bash profile。因此,命令将是echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.zshrc - GusDeCooL
显示剩余13条评论

122

我刚刚花了2个小时设置这个变量。其他答案对我来说都没有有效果。我正在使用macOS Catalina 10.15.4。

首先,找到您实际的Java SDK主目录:

/usr/libexec/java_home

手动导航到该位置,以确保您没有因错误版本等原因而出现任何错误。对我来说,这是:

/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home

接下来,编辑您的终端配置文件。如果您使用的是zsh,则应该是:

vim ~/.zshrc

如果你没有使用zsh,则应该这样:

vim ~/.bash_profile

在文件的任何位置添加以下新行:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home

重启您的终端应用程序(或者执行source ~/.bash_profile命令),然后它应该正常工作。


4
谢谢。在我使用的MacOS BigSur上,这个方法适用。 - Darrell Root
1
我有同样的经历,这个方法解决了我的问题。谢谢! - SeanOlson
7
这在 macOS Monterey 上也有效。感谢您的帮助!非常感激! - pragapraga
要查找您的JAVA SDK主目录,您也可以运行以下命令: 对于MAC OS:echo $JAVA_HOME 对于Windows:echo %JAVA_HOME% - Adarsh Sreeram
1
我运行了 brew updatebrew upgrade 命令,这更新了我的JDK小版本。这导致我的 JAVA_HOME 值不正确。将路径更正以匹配新版本后,现在它可以正常工作了。 - jbaranski
这对我来说很有效,我使用的是macOS Monterey版本12.66.8。 - Bekti Galan

56

我是通过放置来完成的

export JAVA_HOME=`/usr/libexec/java_home`

在我的.bashrc文件中添加(backtics)。请参考我对Adrian答案的评论。
另外也要更新PATH变量。
PATH=$PATH:$JAVA_HOME/bin

1
稍微现代一点的方式:export JAVA_HOME="$(/usr/libexec/java_home)" - MarkHu

42

在最新或旧版Mac OSX上设置$JAVA_HOME环境变量

下载并安装JDK

  1. 首先安装JDK
  2. 打开终端并检查Java版本

$ java -version

设置JAVA_HOME环境变量

  1. 打开.zprofile文件

$ open -t .zprofile

或者创建.zprofile文件

$ open -t .zprofile

  1. 在.zprofile文件中写入以下内容

export JAVA_HOME=$(/usr/libexec/java_home)

保存.zprofile并关闭bash文件,然后在终端中输入以上命令以正常工作。

$ source .zprofile

在终端中设置测试

$ echo $JAVA_HOME  
/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home

6
我有一个问题,即"/usr/libexec/java_home"实际上是什么。答案:https://medium.com/zendesk-engineering/setting-java-home-on-mac-os-acd44e3a6027。 - ekar
4
在 macOS 上,/usr/libexec/java_home 是设置 JAVA_HOME 的最简单可维护方式。您可以使用 java_home 来查找所有已安装的 JDK。 - Shomu
这个在我的2019 Mac上运行Catalina的电脑上很有效,但被接受并得到最多赞的答案则不行。首先是bash profile现在是“.zprofile”,而且被接受的答案中export命令的内容对我也没用,但这个可以。 - cryanbhu
关于从哪里获取JDK的说明 - 或者,您可以从https://adoptopenjdk.net/安装JDK。区别在于,Oracle的许可证不允许使用其JDK进行商业构建,除非您支付许可证费用。而adoptopenjdk是开源的。 - emil.c

35
在Mac OSX 10.5或更高版本中,Apple建议将$JAVA_HOME变量设置为/usr/libexec/java_home,只需在文件~/.bash_profile或~/.profile中导出$JAVA_HOME。
打开终端并运行以下命令。
$ vim .bash_profile

export JAVA_HOME=$(/usr/libexec/java_home)

保存并退出Vim编辑器,然后在.bash_profile上运行source命令。
$ source .bash_profile

$ echo $JAVA_HOME

/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home

26

建议在设置JAVA_HOME环境变量之前检查默认终端shell,通过以下命令:

建议先执行以下命令,以便确定当前的默认终端 shell:

echo $SHELL

如果输出结果没有指定的 shell,则需要手动更改为指定的 shell。

然后,您可以使用以下命令来设置 JAVA_HOME 环境变量:

export JAVA_HOME=/path/to/java/home/directory

请将上面的路径替换为 Java 安装目录的实际路径。

$ echo $SHELL
/bin/bash

如果你的默认终端是 /bin/bash (Bash),那么你应该使用 @Adrian Petrescu 的方法。

如果你的默认终端是 /bin/zsh (Z Shell),那么你应该在 ~/.zshenv 文件中设置以下环境变量:

export JAVA_HOME="$(/usr/libexec/java_home)"

同样地,任何其他未提及的终端类型,您都应该在其相应的终端环境文件中设置环境变量。


7

M1快速指南

  1. 将Java SDK添加到您的M1中,并检查版本

    java --version

获取在您的Mac上安装的所有Java版本

/usr/libexec/java_home -V
  1. 从库中执行Java路径

    /usr/libexec/java_home

(如果有多个Java版本,请指定要使用的Java版本,以我的情况为例是-v17.0.5)

/usr/libexec/java_home -v17.0.5
  1. 在Mac上,打开路径:Mac>用户>'您的用户名/主目录'>.zshrc

    将以下代码添加到文件末尾:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.0.5.jdk/Contents/Home


這對於 M1 最有效! - manhnt

6
如果你使用的是Zsh,则尝试在~/.zshrc文件中添加这一行,并重启终端。
export JAVA_HOME=$(/usr/libexec/java_home) 

4

我通过在~/.profile中添加内容使其工作。不知道为什么,在升级到El Capitan beta之后,即使在.bash_profile中定义了JAVA_HOME,它也无法正常工作。

如果有任何El Capitan beta用户,请尝试添加到.profile中。


2
".profile"和".bash_profile"有什么区别?" - IgorGanapolsky
4
这个想法是,.profile 会在所有的shell(sh, zsh,等等)中运行;而 .bash_profile 只会在bash shell中运行。 - JohnL4

4

在macOS Ventura 2022上测试的Homebrew安装JAVA 11。

.zshrc

export JAVA_HOME=/opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk/Contents/Home

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接