【问题标题】:How to set JAVA_HOME in Mac permanently?如何在 Mac 中永久设置 JAVA_HOME?
【发布时间】:2013-01-20 02:16:28
【问题描述】:

我正在尝试通过在终端输入export JAVA_HOME=/Library/Java/Home 来设置JAVA_HOME。 它为当前会话设置JAVA_HOME

如何永久设置?

【问题讨论】:

  • 我们在 2019 年(原始问题后 6 年) - 这仍然只有一个复杂的解决方案。尝试在现场支持 Mac 解决这个问题。是否没有实用程序可以将 export JAVA_HOME=/Library/Java/Home 添加到当前用户 bash 配置文件 - 或机器级别的等价物?
  • abdul bashit 答案对我有用

标签: java macos java-home


【解决方案1】:

您可以使用/usr/libexec/java_home -v <version you want> 获取JAVA_HOME 所需的路径。例如,要获取 1.7 JDK 的路径,您可以运行 /usr/libexec/java_home -v 1.7,它将返回 JDK 的路径。在您的.profile.bash_profile 中添加

export JAVA_HOME=`/usr/libexec/java_home -v <version>`

你应该很好。或者,尝试说服您使用的 Java 工具的维护者使用此方法来获取他们需要的版本。

要打开“.bash_profile”,在终端中输入以下内容:

nano ~/.bash_profile 

并将以下行添加到文件中:

export JAVA_HOME=`/usr/libexec/java_home -v <version>`

按 CTRL+X 退出 bash。按“Y”保存更改。

要检查路径是否已添加,请在终端中键入以下内容:

source ~/.bash_profile
echo $JAVA_HOME

【讨论】:

  • 如果这回答了您的问题,Vishal,您能否将其标记为答案?谢谢。
  • 这不是答案,因为它不会永久设置我想的 JAVA_HOME 环境变量,这是 OP 要求的。这只是temporary for the current session. 重新启动会将其更改回永久设置的变量。
  • Re Android Addict 评论:shell 没有“永久”环境变量,这就是为什么你有 .bash_profile、.bashrc、.zshrc 等。这个答案将解决问题,应该选择.
  • 就我而言,这仅适用于该实例。虽然用zshrc 替换bash_profile 对我有用
  • @paradocslover 将 bash_profile 重命名为 zshrc(我首先创建了 bash_profile)救了我的命。谢谢!
【解决方案2】:

我在 MAC Catalina 中遇到了同样的问题,如果我编辑 .bash_profile 我发现 export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home 但是当我运行终端 echo $JAVA_HOME 它返回空,后来我发现文件 .zshrc 丢失了我用

创建了这个文件
touch .zshrc 

然后编辑nano .zshrc并写了

source ~/.bash_profile

这可以永久解决我的问题

【讨论】:

  • 曾为 MAC Catalina 解决..!感谢分享提示!
  • 哇...太棒了。感谢分享。
  • 我正在使用 jenv 并发现在 zshrc 文件中的 jenv 配置之后添加 JAVA_HOME 会设置 JAVA_HOME 变量,否则我得到一个空值。 export PATH="$HOME/.jenv/bin:$PATH" eval "$(jenv init -)" export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_252)
  • 这真是天才!
  • 这应该被标记为正确答案,它也对我有用。
【解决方案3】:

在 mac 上设置 Java 路径:

  1. 在mac上打开终端,将路径更改为根cd ~
  2. vi .bash_profile(这会打开 bash_profile 文件)
  3. 点击I插入文字,使用如下文字设置JAVA_HOME和PATH

    • export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home'
    • 导出 PATH=$JAVA_HOME/bin:$PATH

      1. 输入 :wq 保存并退出文件。
      2. 键入 source .bash_profile 以执行 .bash_profile 文件。
      3. 您可以键入 echo $JAVA_HOME 或 echo $PATH

【讨论】:

  • 我试过这个,它改变了shell会话,但对新的shell会话没有影响。
  • Mac OS 会在每个终端会话中自动执行 .bash_profile。您还面临这个问题吗?你试过重启吗?
  • ~/.bash_profile 不是默认文件;大多数人不会有它,所以你不能只是开始编辑它。而且您不能仅仅创建它,因为它具有语法;它需要是一个完整的脚本文件。
【解决方案4】:

macOS 11 Big Sur上安装Java:

  • 最简单的方法是选择 OpenJDK 11 (LTS)、HotSpot JVM 和 macOS x64 是在此处获取最新版本:adoptopenjdk.net
  • 选择 macOS 和 x64 并下载 JDK(约 190 MB),这会将 OpenJDK11U-jdk_x64_mac_hotspot_11.0.9_11.pkg 文件放入您的 ~/Downloads folder
  • 点击 pkg 文件,将安装到这个位置:/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk
  • 快完成了。打开终端后可以确认JDK安装成功:java --version
    • 输出:
openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)
  • JAVA_HOME 是一个重要的环境变量,正确设置它很重要。这是一个技巧,即使在安装了 Java 更新之后,我也可以让环境变量保持最新。在~/.zshrc 中,我将变量设置为:export JAVA_HOME=$(/usr/libexec/java_home)
  • 在以前的 macOS 版本中,这是在 ~/.bash_profile 中完成的。无论如何,打开一个新终端并验证:echo $JAVA_HOME
    • 输出:/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

测试:编译并运行您的 Java 程序

  • 打开文本编辑器,从下面复制代码并将文件保存为HelloStackoverflow.java
public class HelloStackoverflow {
  public static void main(String[] args){
    System.out.println("Hello Stackoverflow !");
  }//End of main
}//End of HelloStackoverflow Class
  • 从终端将工作目录设置为包含HelloStackoverflow.java 的目录,然后键入命令:
javac HelloStackoverflow.java
  • 如果你幸运的话,什么都不会发生

  • 其实,发生了很多事情。 javac 是 Java 编译器的名称。它将 Java 翻译成 Java Bytecode,这是一种用于 Java 虚拟机 (JVM) 的汇编语言。 Java 字节码存储在一个名为HelloStackoverflow.class 的文件中。

  • 运行:输入命令:

java HelloStackoverflow

# output:
# Hello Stackoverflow !

【讨论】:

  • 从昨天开始我试图将它写入 .bash_profile 文件并想知道为什么它不起作用。 .zshrc 文件!!!你拯救了我的一天。谢谢
  • @Kerem 这取决于您的默认外壳集是什么。你可以通过echo $SHELL知道这一点如果是/bin/bash那么你需要在.bash_profile中进行更改,如果是/bin/zsh那么你应该在.zshrc文件中设置它。
【解决方案5】:

试试这个链接 http://www.mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/

这解释正确,我做了以下工作来使它工作

  1. 打开终端
  2. 输入vim .bash_profile
  3. 在我的例子中输入你的java安装目录export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
  4. 点击ESC,然后输入:wq(在vim中保存并退出)
  5. 然后输入source .bash_profile
  6. echo $JAVA_HOME 如果你看到了路径,你就准备好了。

希望对你有帮助。

【讨论】:

  • 这就是答案,而不是上面的所有其他内容。 (但请注意,Dilip 在第 3 行末尾省略了尾随的 "。)
【解决方案6】:

除了其他答案很好地涵盖的 bash/zsh 终端设置之外,如果您想要终端 + GUI 应用程序的永久系统环境变量(适用于 macOS Sierra;也适用于 El Capitan):

launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)

(这会将 JAVA_HOME 设置为最新的 1.8 JDK,您可能已经经历了几次更新,例如 javac 1.8.0_101、javac 1.8.0_131)

当然,将 1.8 更改为 1.7 或 1.6(真的吗?)以满足您的需要和您的系统

【讨论】:

  • 这是 GUI 应用程序的正确答案(虽然不是 OP 的问题......)。在 macOS Sierra 上像魅力一样工作。
  • 此命令在终端上不起作用。有人吗?尝试了 bash_profile 并没有。
【解决方案7】:

此链接可能对您有所帮助:https://developer.apple.com/library/archive/qa/qa1067/_index.html

此外,您可以将环境变量放在以下文件之一中:

~/.bashrc
~/.bash_profile
~/.profile

【讨论】:

    【解决方案8】:

    在你的终端上运行这个命令(这里 -v11 是针对版本 11(java11))-:

    /usr/libexec/java_home -v11
    

    你会在你的终端上得到类似这样的路径 -:

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

    现在您需要在任何编辑器中打开您的 bash 配置文件,例如 VS Code

    如果你想在 vs 代码中编辑你的 bash_profile 然后运行这个命令 -:

    code ~/.bash_profile
    

    否则运行此命令,然后按 i 插入路径。 -:

    open ~/.bash_profile
    

    现在你会得到你的 .bash_profile 你需要添加路径 所以在 .bash_profile (你从第一个命令获得的路径)中添加这个 - :

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

    如果您使用的是代码编辑器,那么现在转到终端并运行此命令以保存更改 -:

    source ~/.bash_profile
    

    else 按 esc 然后 :wq 退出 bash_profile 然后转到终端并运行上面给出的命令。 过程完成。 现在您可以使用此命令进行检查 -:

    echo $JAVA_HOME
    

    你会得到/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home

    【讨论】:

      【解决方案9】:

      要在 Mac 中永久设置 JAVA_HOME,我尝试了以下步骤。

      1. 下载 Java JDK 并将其安装到您的 Mac。安装 Java JDK 版本时,MAC 默认会安装在以下位置。

      /库/Java/JavaVirtualMachines

      1. 打开 .bash_profile 文件(这里我的 Mac 版本是 MacOS High Sierra。您可能需要在某些不同的 MacOS 版本中打开 .zshrc 文件)。

      atom ~/.bash_profile

      1. 将以下内容添加到您的 bash_profile 文件中。

      相应地更改 JDK 版本

      export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
      export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home'
      export PATH=$JAVA_HOME/bin:$PATH
      
      1. 打开终端并执行以下操作。

      source ~/.bash_profile

      打开一个新终端并检查'echo $JAVA_HOME'

      谢谢。

      【讨论】:

        【解决方案10】:

        sql-surferMikroDel,

        其实,答案并没有那么复杂!您只需要添加:

        export JAVA_HOME=(/usr/libexec/java_home)
        

        到您的 shell 配置文件/配置文件。唯一的问题是 - 您使用的是哪个外壳?如果您使用例如 FISH,那么将该行添加到 .profile.bash_profile 将根本不起作用。将它添加到config.fish 文件虽然可以解决问题。永久。

        【讨论】:

          【解决方案11】:

          1) 第一步是确定您是否安装并运行了 Java。

          which java
          

          通常应该是/usr/bin/java。

          2) JAVA_HOME 本质上是目录的完整路径,其中包含一个名为 bin 的子目录,而该子目录又包含 java

          cd /Library/Java/
          
          • 您应该在 /Java 文件夹中有 bin 文件夹,并且它必须包含 [java] 可执行包。

          Folder structure for Mac OS

          3.1) 如果您只想为当前会话设置路径,请在终端中执行此命令export JAVA_HOME=/Library/Java

          3.2) 如果您希望它持续存在,则必须将命令添加到您的 ~/.bash_profile 文件中

          • 打开终端vi ~/.bash_profile
          • 将这些行添加到终端export JAVA_HOME=/Library/Java/Home 并保存
          • 执行下面的命令source ~/.bash_profile

          4) 确认您已正确添加 JAVA_HOME 路径。下面的命令应该为您提供正确的 Java 版本。

          就是这样,你可以使用了!!

          【讨论】:

            【解决方案12】:

            首先,通过运行命令/usr/libexec/java_home -v &lt;version&gt; 替换您运行的任何版本的 OpenJDK,找出您的 java home 的位置。

            接下来使用 vim ~/.bash_profile 编辑您的 bash 配置文件。添加export JAVA_HOME="&lt;java path&gt;" 替换为上一步中找到的java home 的路径。

            最后,运行命令source ~/.bash_profile

            这应该永久设置您的 JAVA_HOME 环境变量。

            为了确保它正常工作,运行 echo $JAVA_HOME 并确保它返回您设置的路径

            【讨论】:

              【解决方案13】:

              添加到 Dilips 的答案中,如果您使用的是 JDK 9,请在第 3 步中使用以下内容(我的 JDK 版本是 9.0.4):

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

              【讨论】:

              • 谢谢。我尝试了 5 种不同的方法,但您的解决方案实际上帮助了我。使用 macOS 10.14.5 (18F132) 并设置 JDK 版本。
              【解决方案14】:

              在 .bashrc 或 .zshrc 中声明两个导出:

              export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8) 
              export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
              

              为快速更改添加别名:

              alias java8='export JAVA_HOME=$JAVA_8_HOME'
              alias java11='export JAVA_HOME=$JAVA_11_HOME'
              

              将默认设置为 Java 11

              java11
              

              导出路径

              export PATH=$JAVA_HOME/bin:$PATH
              

              您可以在 .bashrc/zshrc 文件中将 java11 更改为 java8 以永久更改您的 java 版本

              【讨论】:

                【解决方案15】:

                要在 mac 中永久设置 JAVA_HOME,请确保您的系统中安装了 JDK, 如果没有安装 jdk 可以从这里下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

                安装 jdk 后,请按照以下步骤操作:-

                1) 打开终端

                2) 输入“vim .bash_profile”

                3) 按“i”编辑或输入路径

                4) 输入您的 java 安装目录:- export JAVA_HOME=$(/usr/libexec/java_home)

                5) 点击 ESC 然后输入 ":wq" (在 vim 中保存并退出)

                6) 然后输入“source .bash_profile”

                7) 输入“echo $JAVA_HOME”,如果你看到你设置的路径。

                谢谢你

                【讨论】:

                • (不过这也需要vim,不是吗?不是那么糟糕,但用户必须安装它。)
                • vim预装在mac中
                • 一个使用 vi 甚至 textmate。这不是问题
                【解决方案16】:

                如果您使用的是最新版本的 macOS,则无法使用 ~/.bash_profile 导出环境变量,因为 bash shell 在最新版本的 macOS 中已弃用。

                • 在你的终端运行/usr/libexec/java_home,你会得到/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home这样的东西
                • export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home 添加到.zshrc

                【讨论】:

                  【解决方案17】:

                  如果您使用的是鱼壳。然后可以在.config/fish/config.fish中设置所有变量

                  vim .config/fish/config.fish
                  

                  添加以下行

                  set -g JAVA_HOME "your_path_to_jdk"
                  

                  保存并退出vim。

                  这应该是设置你的 JAVA_HOME。谢谢

                  【讨论】:

                    【解决方案18】:

                    这里的答案通常是正确的,但对我来说,我不知道我需要做类似source ~/.bash_profile 的事情才能真正发挥作用。

                    所以完整的答案是:

                    nano ~/.zshenv // or
                    nano ~/.zshrc // or
                    nano ~/.bash_profile
                    //add this line to zshrc and bash_profile if you want to be 100% sure
                    export JAVA_HOME=$(/usr/libexec/java_home)
                    //save
                    source ~/.bash_profile //the KEY that generally isn't in the answers
                    source ~/.zshrc //I didn't do this one, but maybe you need it
                    

                    【讨论】:

                      【解决方案19】:

                      找出 jenv 会将 $JAVA_HOME 设置为短版本,例如“/Users/*****/.jenv/versions/1.8”。

                      必须卸载 jenv 才能使 $JAVA_HOME 设置像“JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home”一样工作

                      【讨论】:

                        【解决方案20】:

                        添加关注

                        setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Home
                        

                        在您的 ~/.login 文件中:

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-08-21
                          • 2020-08-01
                          • 2020-12-16
                          • 1970-01-01
                          • 2012-08-11
                          • 2015-07-15
                          • 1970-01-01
                          相关资源
                          最近更新 更多