380

我只在工作中使用 Mac,我需要将 JAVA_HOME 设置为 JDK 的正确路径。我下载了JDK,安装了它,现在我在任何地方都找不到它。我在网上寻找解决方案,但没有文件夹 Libraries/Java。

4

5 回答 5

733

该位置已从 Java 6(由 Apple 提供)更改为 Java 7 及更高版本(由 Oracle 提供)。找出这一点的最佳通用方法是运行

/usr/libexec/java_home

这是本机支持的查找默认 Java 安装路径以及存在的所有替代安装路径的方法。

如果您查看它的帮助文本 ( java_home -h),您会发现您可以使用此命令在 OS X ( java_home --exec ...) 上可靠地启动 Java 程序,并能够显式指定所需的 Java 版本和体系结构,甚至请求用户如果丢失,请安装它。

一种更简单的方法,但可以帮助您具体跟踪命令java解析到哪个 Java 安装,如下所示:

  1. which java
    
  2. 如果这给了你类似的东西/usr/bin/java,这是一个到真实位置的符号链接,运行

    ls -l `which java`
    

    在我的系统上,这输出

    /usr/bin/java -> /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/bin/java
    

    从中您可以读取 Java 主目录;

  3. 如果usr/bin/java指向另一个符号链接,递归地应用相同的方法

    ls -l <whatever the /usr/bin/java symlink points to>
    

一个重要的变化是,如果您从安装 Apple 的 Java 开始,然后安装 Oracle 的,您将获得的设置。在这种情况下,上面的第 2 步将为您提供

/usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Commands/java

并且该特定java二进制文件是一个存根,它将java通过咨询环境变量来解析要调用的实际命令JAVA_HOME,如果它未设置或不指向 Java 主目录,则将回退到调用java_home. 在调试设置时记住这一点很重要。

于 2013-08-09T10:39:53.927 回答
38

您使用的是哪个 Mac 版本?试试这些路径

 /System/Library/Frameworks/JavaVM.framework/ OR
 /usr/libexec/java_home

此链接可能会有所帮助 -如何在 Mac OS X 上设置 $JAVA_HOME 环境变量

于 2013-08-09T10:34:09.483 回答
27

看看JDK是否在:

库/Java/JavaVirtualMachines/ 或 /System/Library/Java/JavaVirtualMachines/

检查此较早的 SO 帖子: OSX 10.7 Lion 上的 JDK

于 2013-08-09T10:33:14.510 回答
7

在我的 Mac 上:

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

顺便说一句,你试过which java吗?

于 2013-08-09T10:31:36.860 回答
6

/System/Library/Frameworks/JavaVM.framework/

另请参阅山狮上的 Java 7 路径

于 2013-08-09T10:31:47.580 回答