在Mac OS X上,Java安装在哪里?

870
我在Mac OS 10.7.5上从这里下载了Java 7u17,并成功安装了它。为了进行一些JNI编程,我需要知道Java安装在我的Mac上的位置。
我原以为在/Library/Java/JavaVirtualMachines/文件夹内会有一个名为1.7.0.jdk或类似的文件夹,但是我发现该文件夹是空的。通过在终端中运行ls /Library/Java/JavaVirtualMachines/确认了这一点。我已经尝试搜索它,看看是否安装在其他地方,但似乎没有找到任何相关信息。
请问有人能告诉我Java安装在我的Mac上的位置吗?

18
关闭/重新开放投票者注意:这个问题明确地不属于离题(关于程序员常用工具的问题)。不幸的是,它被元社区(http://meta.stackoverflow.com/questions/322704/beyond-confused-about-question-and-answer-reception)跟随炒作了。 - Rob
3
我在 /Library/Java/JavaVirtualMachines/ 找到了JDK。我使用的是macOS Big Sur(11.0.1)操作系统,安装的JDK版本是1.8.0。 - Chaitanya
21个回答

1637

使用终端命令/usr/libexec/java_home -v 1.8来确定您的Java 1.8的主目录位置。

如果您只想找到最近版本的Java主目录,可以省略版本号。例如 /usr/libexec/java_home


1
我来到这个问题是因为在我的Mac上的Eclipse中出现了一个错误,因为程序的第一行“import java.util.*”出现了一个错误。我强烈怀疑这是因为Java路径没有设置正确或其他原因(尽管我之前已经设置过)。我输入了这个答案中的命令,然后得到了一个目录。我可以将该目录粘贴到“本地库文件夹配置”窗口中的文本框中吗?还是这个目录应该放在其他地方? - OKGimmeMoney
59
在.bash_profile文件中添加export JAVA_HOME=\/usr/libexec/java_home``,以便始终设置JAVA_HOME变量(注意libexec命令周围的反引号)。 - Steve Henty
2
如果您只想知道 JDK 是否已安装在您的 Mac 上,请省略版本号并从终端运行:$ echo $(/usr/libexec/java_home) - Daniel Viglione
6
在 Mac 10.12.3 上,我们应该使用命令 /usr/libexec/java_home --v 来显示最新版本的 Java。 - klion26
4
请注意,macOS Big Sur 更改了 java_home 命令的行为。现在,如果 JAVA_HOME 环境变量已经设置为一个有效的 JDK,它只会返回该值,并忽略 -v 参数。如果 JAVA_HOME 设置为无效的文件夹,则 java_home 命令将完全不起作用。要获得合理的输出,您必须在调用 /usr/libexec/java_home 之前取消设置 JAVA_HOME。 - swpalmer

188

你可以使用

/usr/libexec/java_home

在您的终端中输入命令以了解Java安装路径。


8
我更喜欢这个方案,因为它不受安装的JVM版本的影响。 - Alexandre Santos
1
这未能找到我由 Oracle 安装的 Java 8 版本。 - Antoine Lizée
18
你为什么要在那里使用 echo $(...)?只使用 /usr/libexec/java_home不是已经可以实现同样的功能了吗? - Paŭlo Ebermann
1
被采纳的答案对我没用,但这个可行!(我通常不是 Mac/Unix 用户) - Roel
这是一个古老的答案。请继续使用/Library/Java/JavaVirtualMachines/ - Soner from The Ottoman Empire
显示剩余2条评论

87
原来我安装的是Java 7 JRE,而不是JDK。 正确的下载链接在 这里。 安装后,在JavaVirtualMachines目录中出现了jdk1.7.0jdk

56
对我来说,它位于/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk (知道JDK 1.6的路径为:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/)。 - Zakaria
3
在 ~/.bash_profile 中输入 export JAVA_HOME=$(/usr/libexec/java_home),该命令用于设置 JAVA_HOME 环境变量,并且不改变原意。 - Oleksii Kyslytsyn

47

如果您只安装了JRE,它似乎会被放置在:

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

3
不应依赖于这个现有的东西。如果需要JRE,应将其捆绑在自己的应用程序中。 - swingler
1
设置JAVA_HOME路径时包含空格字符是具有挑战性的!我没有成功... - Antoine Rosset
你可以在某个地方创建一个链接到该目录,并将JAVA_HOME设置为该链接。 - Kuba
这似乎是“Java”系统偏好设置面板安装它的位置。 - David Avendasora
3
@AntoineRosset,你可以这样设置它: export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home - coda
显示剩余2条评论

38

尝试这个方法,它是在Mac OS X中查找Java安装路径的简单方法:

前往

1)/Library即Macintosh HD/Library

输入图片描述

2)在Library中点击Java文件夹。

输入图片描述

3)所以最终路径为

/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

希望这能对某些人有所帮助。


2
当你需要从IDE明确指定JDK时,这非常有帮助。谢谢。 - Shwetabh Shekhar
1
我有多蠢啊?我的终端显示在 /Library/Java/JavaVirtualMachines/ 安装了 2 个 JDK,但是当我在 Finder 中导航到该目录时找不到它们... 我能变得多蠢啊... - SoftwareSavant
@SoftwareSavant,请参考 https://dev59.com/4Gcs5IYBdhLWcg3wjUqR#14875241 的答案,它可能会对您有所帮助。 - Jaywant Khedkar

35

使用Unix的find函数来查找已安装的Java...

sudo find / -name java

23
通常情况下,您不需要使用sudo来运行find命令。如果您不想看到关于无法访问目录的错误消息,请消除这些消息,而不是不必要地使用root权限。总是使用sudo是一个不好的习惯。可以将stderr重定向到/dev/null,像这样:find / -name java 2> /dev/null - Walter Underwood
1
如果我需要查看不可访问目录下的内容,该怎么办? - serkan
2
Walter的观点是java二进制文件将是全局可读的,因此不需要使用sudo。你的回答仍然很有用 :) - Jared Beck
是的,我刚刚使用它找到了src.zip(Java JDK的源代码)。 - Dinis Cruz
在~/.bash_profile文件中,将export JAVA_HOME=$(/usr/libexec/java_home)导出。 - Oleksii Kyslytsyn

25

如果你输入

java -verbose 

这也提供了加载jar文件的位置,因此也提供了Java路径。


1
我在~/.bash_profile中添加了export JAVA_HOME=$(/usr/libexec/java_home)。 - Oleksii Kyslytsyn

22

Mac OS的Java包结构与Windows略有不同。但作为开发人员,只需要设置PATHJAVA_HOME,不必为此感到沮丧。

因此,在.bash_profile中将JAVA_HOMEPATH设置如下。以下示例适用于Java 6:

export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
export PATH=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin:$PATH

12
这会从路径中删除几乎所有的其它内容?只有在您的系统中仅使用Java而没有其他任何内容时才这样做。 - Paŭlo Ebermann
在~/.bash_profile中导出JAVA_HOME=$(/usr/libexec/java_home)。 - Oleksii Kyslytsyn

20
你可能没有意识到,但你很可能安装了多个Java版本。
要列出Mac上所有已安装的JVM的版本、架构和文件夹位置: $ /usr/libexec/java_home --verbose 或者: $ /usr/libexec/java_home -V(注意是大写的V!)
示例输出:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    12.0.1 (x86_64) "Oracle Corporation" - "Java SE 12.0.1" /Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home
    1.8.202.08 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    1.8.0_282 (x86_64) "Amazon" - "Amazon Corretto 8" /Users/username/Library/Java/JavaVirtualMachines/corretto-1.8.0_282/Contents/Home
    1.8.0_202 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home

1
在我看来,这是一个更完整的答案。我安装了多个版本,而/Internet Plug-Ins/...导致Java更新程序出现问题,但我找不到该工具所抱怨的版本...直到现在。 - wildcat12

12

只需在“前往文件夹”中输入以下路径:/Library/Java/JavaVirtualMachines/,然后单击“前往”按钮即可进入Finder。


好的,我刚刚尝试了一下,成功地导航到了该目录。为什么我不能在Finder中正常地导航到那个文件夹呢?这只是苹果变得更加烦人吗...另外非常烦人的是,Gradle 4.3版本除了Java 8以外的任何版本都无法使用。 - SoftwareSavant
在~/.bash_profile中添加以下代码:export JAVA_HOME=$(/usr/libexec/java_home) - Oleksii Kyslytsyn
这个文件夹在我的情况下是空的......但是当我检查java-version时......它显示版本1.8 - Wahab Khan Jadon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接