ChatGPT解决这个技术问题 Extra ChatGPT

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

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

这是我有史以来的第一台 MAC,我仍在努力掌握导航的窍门。

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

现在我在这个 MAC 上,我安装了我的 JDK,现在我需要设置 JAVA_HOME 环境变量。

我不知道该怎么做。

我尝试按照其中一些指南进行操作,但并没有走得太远。

Mkyong.com : 如何在 Mac OSX 中设置 JAVA_HOME 变量 YouTube : 如何在 mac、linux、solaris、rhel 上设置环境变量 YouTube : 如何在 Mac 中设置环境变量

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

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

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

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

在 M1 Mac 上通过 brew 安装后,我的位置是 /opt/homebrew/Cellar/openjdk/17.0.1_1/libexec/openjdk.jdk/Contents/Home。显然更改了您的版本,但找到路径的典型方法被证明是困难的,所以我希望这对其他人有所帮助。

A
Adrian Petrescu

如果你使用 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

当您说“shell”时,您的意思是我关闭终端窗口并重新打开它吗?另外,这是否会为我的 jdk 永久添加环境变量?
我认为如果您执行 source ~/.bash_profile 而不是重新启动终端,它会起作用,对吗?
@ShobhitPuri 是的,它会,我只是想让提问者保持简单。
echo export "JAVA_HOME=\$(/usr/libexec/java_home -v 1.7)" >> ~/.bash_profile 如果您需要特定版本。 1.7 在这种情况下。
在 OSX 11 上。我们现在使用 .zshrc 而不是 bash 配置文件。所以命令将是 echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.zshrc
K
Koray Tugay

我只花了 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

重新启动您的终端应用程序(或源 ~/.bash_profile),它应该可以正常工作。


谢谢你。这在 MacOS BigSur 上对我有用
我有同样的经历,这为我解决了。谢谢!
这甚至适用于 macOS Monterey。谢谢这个!欣赏它!
J
JohnL4

我是这样做的

export JAVA_HOME=`/usr/libexec/java_home`

(backtics) 在我的 .bashrc 中。请参阅我对 Adrian 回答的评论。


L
Levi Arista

在 Mac OSX 10.5 或更高版本中,Apple 建议设置 $JAVA_HOME variable to /usr/libexec/java_home,只需导出 $JAVA_HOME in file ~/. bash_profile~/.profile

打开终端并运行以下命令。

$ 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

C
Community

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

下载和安装安装 JDK

一、安装JDK 打开终端检查java版本

java -版本

设置 JAVA_HOME 环境变量

打开 .zprofile 文件

打开 -t .zprofile

或创建 . zprofile 文件

打开 -t .zprofile

写入 .zprofile

导出 JAVA_HOME=$(/usr/libexec/java_home)

保存 .zprofile 并关闭 bash 文件,然后在终端中写入以完美工作。

$ source .zprofile

在终端中设置测试

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

我还有一个问题“/usr/libexec/java_home”实际上是什么。答案:medium.com/zendesk-engineering/…
/usr/libexec/java_home 是在 macOS 上设置 JAVA_HOME 的最简单的可维护方式。您可以使用 java_home 来: 查找所有已安装的 JDK。
这适用于我在 2020 年运行 Catalina 的 2019 年 Mac。接受和最受好评的答案没有。首先是 bash 配置文件现在是 .zprofile,而且接受答案中的 export 命令内容对我不起作用,但确实如此。
只需说明从何处获取 JDK — 或者,您可以从 adoptopenjdk.net 安装 JDK。不同之处在于 Oracle 的许可证不允许使用其 JDK 进行商业构建,除非您为许可证付费。而采用openjdk 是开源的。
J
Jerry Chong

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

$ echo $SHELL
/bin/bash

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

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

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

同样,上面未提及的任何其他终端类型,您应该在其各自的终端 env 文件中设置环境变量。


N
Niket Shah

如果您使用的是 Zsh,请尝试在 ~/.zshrc 文件中添加此行并重新启动终端。

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

S
Senthil Acs

我通过添加到 ~/.profile 让它工作了。不知何故,在更新到 El Capitan beta 后,即使 JAVA_HOME 已在 .bash_profile 中定义,它也无法正常工作。

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


.profile 和 .bash_profile 有什么区别?
这个想法是 .profile 为所有 shell(sh、zsh 等)运行; .bash_profile,仅适用于 bash shell。
J
John Marcus

由于我使用的是由 sdkman 管理的 openjdk,所以我添加了

sudo ln -sfn /path/to/my/installed/jdk/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

将此添加到您的系统可以让 java_home 识别您安装的 Java 版本,即使它不是通过标准软件包安装的


请问在这种情况下您将 JAVA_HOME 设置为什么? export JAVA_HOME="/usr/libexec/java_home" ?
有了这条线,java 将与标准安装类似地被发现,我们将标准安装位置链接到实际安装位置,因此它被视为正式安装的包,您不需要设置 JAVA_HOME
p
ptn77

我检查了我的 /Library/Java/JavaVirtualMachines/ 目录,发现版本是 jdk1.8.0_321.jdk/Contents/Home 并将其直接添加到我的 .bash_profile 中:

导出 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home

但在采购 .bash_profile 后仍然抱怨:操作无法完成。找不到支持 apt 的 Java 运行时。


抱歉,我使用的是 sudo apt install for linux,不得不将其更改为 brew。那是我的问题
即使其他用户对此表示赞同,我也看不到这如何回答本页顶部的问题,但应该如此。请根据How to Answeredit或删除答案。否则,它可能会被标记为“不是答案”并被删除。
S
Sunil

在最新的 Mac 中,您必须在 .zprofile 中添加 Set $JAVA_HOME 环境变量。在这里,我们以简单的方式打开它。按 ⌘ + Shift + 。从键盘。只需打开它并按照 here 的说明添加 $JAVA_HOME 环境变量: