首页 文章

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

提问于
浏览
503

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

然而,一旦安装,它似乎 JAVA_HOME 环境变量是 not set properly .

23 回答

  • 10

    以下对我有用 . 我在安装了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"
    
  • 38

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

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

    键入终端此确认:

    $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)
    
  • 22

    升级我的Mac OS后,我遇到了同样的问题:

    • cmd> vi~ / .bash_profile

    • 添加/更新JAVA_HOME的行:export JAVA_HOME =“/ Library / Java / JavaVirtualMachines / jdk1.7.0_15.jdk / Contents / Home”

    • cmd> source~ / .bash_profile或打开一个新终端

    我认为jdk版本可能有所不同,所以只需使用/ Library / Java / JavaVirtualMachines /下的版本

  • 28

    对于mac用户 . java 8应该添加

    export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
    # JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
    

    java 6:

    export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
    # JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    

    ref:http://qiita.com/seri_k/items/e978c1339ce51f13e297

  • 985

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

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

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

    //This command will open the file using vim
    $ vim ~/.bash_profile
    

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

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

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

    $ source ~/.bash_profile
    
    $ echo $JAVA_HOME
    

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

  • 2

    对于OS X,您可以:

    export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`
    
  • 77

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

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

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

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

  • 1

    我的方法是:

    的.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
    

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

  • 1

    对于Mac OS X 10.9,我从Oracle安装了最新版本的JRE,然后将JAVA_HOME重置为/ Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home .

    我相信有一个更好的方法,但让我开始运行 .

    hughsmac:~hbrien $ echo $ JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

  • 13

    对于Mac Yosemite,

    JDK 1.7.0_xx正在使用

    $ ls -ltar /usr/bin/java
    /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
    
    JAVA_HOME
    
    /Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
    
  • 0

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

    .bash_profile

    export JAVA_HOME8=`/usr/libexec/java_home --version 1.8`
    export JAVA_HOME9=`/usr/libexec/java_home --version 9`
    

    请注意,对于最新版本,它是 9 而不是 1.9 .

    设置活动Java:

    export JAVA_HOME=$JAVA_HOME8
    export PATH=$JAVA_HOME/bin:$PATH
    

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

    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'
    

    终端测试:

    % 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)
    

    编辑:Java 10的更新

    export JAVA_HOME10=`/usr/libexec/java_home --version 10`
    alias j10='export JAVA_HOME=$JAVA_HOME10; export PATH=$JAVA_HOME/bin:$PATH'
    
  • 14

    如果您需要在Mac OS X(Yosemite)下拥有多个版本的JDK,那么为它们之间的自动切换添加一些脚本可能会有所帮助 .

    你要做的是编辑 ~/.bash_profile 并添加以下内容:

    function setjdk() {
      if [ $# -ne 0 ]; then
       removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
       if [ -n "${JAVA_HOME+x}" ]; then
        removeFromPath $JAVA_HOME
       fi
       export JAVA_HOME=`/usr/libexec/java_home -v $@`
       export PATH=$JAVA_HOME/bin:$PATH
      fi
     }
     function removeFromPath() {
      export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
     }
    setjdk 1.7
    

    该脚本的作用是首先删除 PATH 中的其他JDK版本,以便它们不会干扰我们的新JDK版本 . 然后它巧妙地使用 /usr/libexec/java_home 这是一个列出已安装的JDK版本的命令 . -v 参数告诉 java_home 使用提供的版本返回JDK的路径,例如1.7 . 我们还将 PATH 更新为指向新找到的 JAVA_HOME 目录的bin目录 . 最后我们可以简单地执行函数

    setjdk 1.7
    

    它选择最新安装的1.7分支JDK版本 . 要选择特定版本,您只需执行即可

    setjdk 1.7.0_51
    

    代替 . 运行 /usr/libexec/java_home -V 以获取有关如何选择版本的更多详细信息 .

    附:保存后别忘了 source ~/.bash_profile .

  • 0

    以上没有_264581_的EC2工具,因为它预期在 JAVA_HOME 下面有 bin/java 等 . /System/Library/Frameworks/JavaVM.framework/Home 确实有效 .

  • 10

    OSX Yosemite,ZSH和Java SE Runtime Environment 8,我不得不:

    $ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

    并在〜/ .zshrc中将JAVA_HOME更改为 export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/Current"

  • -1

    /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/
    

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

    UpdateUnderstanding Java From Command Line on OSX对其工作原理有了更好的解释 .

    export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
    

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

  • 97

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

    /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
    

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

  • 5

    安装Java optional packageOracle 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)"
    

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

  • 2

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

    export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
    
  • -1

    我在High Sierra 10.13.4上使用Fish shell并通过Brew安装Java .

    它不是自动设置所以在我运行的系统上设置它correctly

    set -U JAVA_HOME (/usr/libexec/java_home)
    
  • 0

    只需在 netbeans.conf 文件中设置1.8 jdk版本的java_home:

    /Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
    

    取消注释:

    netbeans_jdkhome="path/to/jdk"
    

    并设置1.8 jdk的路径,在我的情况下:

    netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
    

    这种方法让你在mac os上有几个jdk版本

  • -2

    这个答案与 Mountain Lion 有关,而不是狮子 . 我需要为AWS Command Line Tools执行此操作 . 根据the AWS docs,运行 which java 返回 /usr/bin/java .

    所以,我在 .bashrc 中设置 JAVA_HOME=/usr .

    显然, /usr/bin/java/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java 的符号链接,这使得一切正常 .

    Update

    如下面的注释中所述,当 JAVA_HOME 环境变量要由AWS Command Line Tools以外的其他设备使用时,此 JAVA_HOME 值不是理想的解决方案 . 但是,它适用于AWS Command Line Tools,正如其文档中所述 .

  • 17

    任何使用澳大利亚税务局(ATO)的AUSKEY的人都应该卸载AUSKEY . 这解决了我的JAVA_HOME问题 .

    MAC用户也不再需要它 . 呀!

  • 1

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

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

相关问题