【问题标题】:How to set JAVA_HOME environment variable on Mac OS X 10.9?如何在 Mac OS X 10.9 上设置 JAVA_HOME 环境变量?
【发布时间】:2014-05-15 13:59:57
【问题描述】:

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

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

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

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

我不知道该怎么办。

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

  1. Mkyong.com : How to set JAVA_HOME variable in Mac OSX

  2. YouTube : How to set environment variables on mac, linux, solaris, rhel

  3. YouTube : How to Set Environment Variables in Mac

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


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


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

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

【问题讨论】:

标签: java macos osx-mavericks


【解决方案1】:

如果您使用的是 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
【解决方案2】:

我是这样做的

export JAVA_HOME=`/usr/libexec/java_home`

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

【讨论】:

    【解决方案3】:

    我只花了 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。谢谢这个!欣赏!
    【解决方案4】:

    在 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
    

    【讨论】:

      【解决方案5】:

      在最新或旧版 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
      

      【讨论】:

      • 我还有一个问题“/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 是开源的。
      【解决方案6】:

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

      $ echo $SHELL
      /bin/bash
      

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

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

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

      同样的,上面没有提到的任何其他终端类型,你应该在其各自的终端环境文件中设置环境变量。

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

          【解决方案8】:

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

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

          【讨论】:

          • .profile 和 .bash_profile 有什么区别?
          • 这个想法是 .profile 为所有 shell(sh、zsh 等)运行; .bash_profile,仅适用于 bash shell。
          【解决方案9】:

          由于我使用的是通过 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
          【解决方案10】:

          我检查了我的 /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。那是我的问题
          猜你喜欢
          • 2014-04-25
          • 2011-10-10
          • 2014-11-22
          • 2014-03-20
          • 2017-07-08
          • 2013-11-27
          • 2011-11-22
          相关资源
          最近更新 更多