69

我的 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,但没有找到任何特定于我的问题的内容。

谢谢

萨比亚

4

8 回答 8

109

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

于 2012-06-03T19:54:26.957 回答
15
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
于 2015-05-17T22:01:15.757 回答
12

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

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

于 2012-06-03T20:01:26.677 回答
1

我遇到了同样的问题,在阅读了这篇文章后,我仔细检查JAVA_HOME.bash_profile. 它实际上是:

export JAVA_HOME=$(which java)

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

export=/Library/Java/Home

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

于 2017-05-12T07:25:51.307 回答
1

在 MacOS Catalina 中,运行

sudo nano ~/.bash_profile

bash_profile中,添加:

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

通过运行java --version进行验证

于 2020-03-22T00:24:34.890 回答
1

对我来说,当我下载macOS Compressed Archive了哪个底层目录包含

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

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

于 2020-07-27T05:32:52.400 回答
1

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

同一篇文章建议改用Java VisualVM

于 2020-11-09T07:47:58.067 回答
0

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

export JAVA_HOME='/usr/'

export PATH=${JAVA_HOME}/bin:$PATH
于 2019-10-24T18:52:33.317 回答