【问题标题】:Unable to locate an executable at "/usr/bin/java/bin/java" (-1)无法在“/usr/bin/java/bin/java”中找到可执行文件 (-1)
【发布时间】:2012-06-08 01:28:57
【问题描述】:

我在我的 mac osx 10.7.3 中遇到了一个可悲的 Java 问题。 以前我安装了它,它工作正常。 随着时间的推移对 .bash_profile 和 .profile 文件进行了一些更改后, 我遇到了类似

的错误
Unable to locate an executable at "/usr/bin/java/bin/java"

每当我尝试在终端中运行“javac”或“java”时。

echo $PATH 给出如下输出:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/sabya/Documents/Play_Framework/play-2.0:/usr/X11/bin:/usr/local/git/bin:/usr/local/mysql/bin

我的 .bash_profile 看起来像:

alias start_mysql="/Library/StartupItems/MySQLCOM/MySQLCOM start"
alias stop_mysql="/Library/StartupItems/MySQLCOM/MySQLCOM stop"
export JAVA_HOME=/usr/bin/java

which java的输出

/usr/bin/java

它困扰了我很长时间,卸载和安装 java 并没有帮助我的运气。

我是 Mac 新手,需要帮助解决这个问题。

在发布这个问题之前用谷歌搜索并看到了 SOF,但没有找到任何特定于我的问题的内容。

谢谢

萨比亚

【问题讨论】:

    标签: java macos javac


    【解决方案1】:

    毫无疑问,export JAVA_HOME=/usr/bin/java 是罪魁祸首。此环境变量应指向 JDK 或 JRE 安装目录。谷歌搜索显示,MacOS X 的最佳选择似乎是export JAVA_HOME=/Library/Java/Home

    【讨论】:

    • export JAVA_HOME=/Library/Java/Home in .bash_profile 运行良好。感谢您的帮助。 :-)
    • 我的安装到/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
    • 这对我也很有效,虽然我不明白。如果你说“哪个java”控制台返回/usr/bin/java,那我们为什么要设置不同的路径呢?
    • @Loebre:查看 Anony-Mousse 的答案
    • 2019 年 JDK 11 更新:export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
    【解决方案2】:
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
    

    因为:

     $ find /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home -name java*
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/javac
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/javadoc
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/javafxpackager
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/javah
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/javap
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/javapackager
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/javafx-src.zip
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/bin/java
    

    【讨论】:

      【解决方案3】:

      JAVA_HOME 不是 java 可执行文件的名称。但是该目录中安装了java。可执行文件应该是$JAVA_HOME/bin/java

      which 命令在那里对您没有帮助。它不会为您提供 java 主页,但很可能这只是安装在非常不同目录中的 java 的包装器或符号链接。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,在阅读了这篇文章后,我仔细检查了 .bash_profile 中的 JAVA_HOME 定义。其实是:

        export JAVA_HOME=$(which java)
        

        正如Anony-Mousse 解释的那样,它是可执行文件。将其更改为:

        export=/Library/Java/Home
        

        解决了这个问题,但理解为什么它在配置文件中以这种方式被重视仍然很有趣。

        【讨论】:

          【解决方案5】:

          在 MacOS Catalina 中,运行

          sudo nano ~/.bash_profile
          

          bash_profile 中,添加:

          export JAVA_HOME=$(/usr/libexec/java_home)
          source ~/.bash_profile
          

          通过运行验证java --version

          【讨论】:

            【解决方案6】:

            对我来说,当我下载了底层目录包含的macOS Compressed Archive 时会出现问题

            jdk-11.0.8.jdk
            - Contents
              - Home
                - bin
                - ...
              - MacOS
              - _CodeSignature
            

            所以,要解决这个问题,JAVA_HOME 应该直接指向 /Path-to-JDK/Contents/Home。

            【讨论】:

              【解决方案7】:

              对于那些使用较新版本的 java:jhat 自 Java 9 以来已被删除。来源:https://www.infoq.com/news/2015/12/OpenJDK-9-removal-of-HPROF-jhat/

              同一篇文章建议改用Java VisualVM

              【讨论】:

                【解决方案8】:

                我遇到了同样的问题。用以下几行更新 bash_profile,为我解决了这个问题:

                export JAVA_HOME='/usr/'
                
                export PATH=${JAVA_HOME}/bin:$PATH
                

                【讨论】:

                • 我有同样的问题,我按照你的解决方案,但终端没有保存我的设置。我应该如何保存 bash 配置文件中的设置?
                猜你喜欢
                • 2013-08-15
                • 2018-07-23
                • 2016-09-12
                • 1970-01-01
                • 1970-01-01
                • 2016-07-19
                • 2021-07-05
                • 1970-01-01
                • 2023-03-05
                相关资源
                最近更新 更多