ChatGPT解决这个技术问题 Extra ChatGPT

Where is Java Installed on Mac OS X?

I just downloaded Java 7u17 on Mac OS 10.7.5 from here and then successfully installed it. In order to do some JNI programming, I need to know where Java installed on my Mac.

I thought that inside the /Library/Java/JavaVirtualMachines/ folder, there would be a folder called 1.7.0.jdk or something, but then I found that the folder is empty. This was confirmed by running ls /Library/Java/JavaVirtualMachines/ in the Terminal. I've tried searching for it to find out if it was installed somewhere else, but that doesn't seem to be turning anything up.

Could someone please tell me where Java is installed on my Mac?

To close voters/reopeners - this question is explicitly not off-topic (questions about tools commonly used by programmers). Unfortunately, it got bandwagoned by meta.
I found the JDK in /Library/Java/JavaVirtualMachines/. I'm using macOS Big Sur(11.0.1). And installed jdk version is 1.8.0

A
Arsen Khachaturyan

Use /usr/libexec/java_home -v 1.8 command on a terminal shell to figure out where is your Java 1.8 home directory

If you just want to find out the home directory of your most recent version of Java, omit the version. e.g. /usr/libexec/java_home


I got to this question because I was getting an error in eclipse on my mac because I was getting an error on the first line of the program "import java.util.*." I strongly suspect this is because the java path isn't set correctly or something (even though I set this up once before). I entered the command in this answer and I get a directory. Can I just paste that directory into the textbox in the "Native library folder config" window? Or does this directory belong somewhere else?
Added export JAVA_HOME=`/usr/libexec/java_home` to .bash_profile so JAVA_HOME is always set (note the back-ticks around the libexec command)
If you just want to know if the JDK is installed on your mac, omit the version number and run from terminal: $ echo $(/usr/libexec/java_home)
On Mac 10.12.3, we should /usr/libexec/java_home -- v to show the most recent version of java
Note that macOS Big Sur changed the behaviour of the java_home command. Noe, if if the JAVA_HOME environment variable is already set to a valid JDK that is all it will return, it will ignore the -v parameter. If JAVA_HOME is set to an invalid folder, the java_home command won't work at all. To get a reasonable output you must unset JAVA_HOME before invoking /usr/libexec/java_home
S
Shahab Rauf

You could use

/usr/libexec/java_home

command in your terminal to know the path where Java being installed.


I like this solution better than the accepted answer because it is independent of the version of the JVM installed.
This didn't find my java 8 version installed by Oracle.
Why do you have the echo $(...) there? Doesn't just /usr/libexec/java_home do the same?
The accepted answer did not work for me but this worked! (I'm normally not a mac/unix user)
@PaŭloEbermann It doesn't work for me without dolar sign and brackets.
T
Thunderforge

Turns out that I actually had the Java 7 JRE installed, not the JDK. The correct download link is here. After installing it, jdk1.7.0jdk appears in the JavaVirtualMachines directory.


For me, it was under /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk (knowing that for the JDK 1.6 the path is : /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/)
export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile
M
Morrie

If you install just the JRE, it seems to be put at:

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

You should not rely on this existing. If you need the JRE, bundle inside your own application.
Setting JAVA_HOME with a path containing a space character is challenging ! I didn't succeeded...
you can create somewhere a link to this directory and set JAVA_HOME to that link
This is where the "Java" System Preferences panel seems to install it.
@AntoineRosset, you can set it this way: export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
A
Abimaran Kugathasan

Use unix find function to find javas installed...

sudo find / -name java

You do not need sudo to run find for generally-accessible commands. If you don't want to see the error messages about inaccessible directories, get rid of the messages rather than using root privs unnecessarily. Using sudo all the time is a bad habit. Redirect stderr to /dev/null, like this: find / -name java 2> /dev/null
What should i do if i need too look under inaccessible directories ?
Walter's point is that the java binary will be world readable, therefore sudo is not necessary. Your answer is still useful :)
Yes, I just used this to find src.zip (the source code of the java jdk)
export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile
J
Jaywant Khedkar

Try This, It's easy way to find java installed path in Mac OS X,

GoTO

1 ) /Library i.e Macintosh HD/Library

https://i.stack.imgur.com/7BNFT.png

2) Click on Library in that we find Java folder.

https://i.stack.imgur.com/jUGhY.png

3) So final path is

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

Hope so this is help for someone .


Pretty helpful when you have to point the JDK explicitly from an IDE. Thanks
How Dense am I? My terminal says that I have 2 jdk's installed in /Library/Java/JavaVirtualMachines/ but I can't find them when I navigate to that directory in finder... How dense can I get...
@SoftwareSavant, Please ref stackoverflow.com/a/14875241 answer ,It's may be help you .
j
jones j alapat

If you type

java -verbose 

This also gives the location from which the jars are loaded and hence also the java path.


I added export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile.
S
Shawn

Java package structure of Mac OS is a bit different from Windows. Don't be upset for this as a developer just needs to set PATH and JAVA_HOME.

So in .bash_profile set JAVA_HOME and PATH as below. This example is for 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

This removes about everything else from the path? Do this only if you are only using Java and nothing else in your system.
export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile.
M
Mina Fawzy

just write /Library/Java/JavaVirtualMachines/
in Go to Folder --> Go in Finder


ok, I just tried this and I managed to navigate to the directory. Why can't I navigate to that folder normally in Finder? Is this just Apple being extra annoying... Also extra annoying, Gradle version 4.3 doesn't work with any version of Java except for Java 8
export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile
m
manny

Edited: Alias to current java version is /Library/Java/Home

For more information: a link


That would be an alias for the most recent version, which would correctly point to Java 7 SDK once it is installed.
This link only exists for legacy purposes, and will not be updated by installing Java 7. Do not use this path.
I updated export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile.
P
Pranay Aryal

type which java in terminal to show where it is installed.


Yes, export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile.
A
Abdennour TOUMI

For :

OS X : 10.11.6

Java : 8

I confirm the answer of @Morrie .

   export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home;

But if you are running containers your life will be easier


I think this should have been a comment.
I dont think , because there is an Added value which is ` export JAVA_HOME=`. ... What about you @Thunderforge
export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile.
T
Tony Kroch

I have just installed the JDK for version 21 of Java SE 7 and found that it is installed in a different directory from Apple's Java 6. It is in /Library/Java... rather then in /System/Library/Java.... Running /usr/libexec/java_home -v 1.7 versus -v 1.6 will confirm this.


export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile
c
codercat

I tried serkan's solution, it found java 7's location on OS X Mavericks. it is resided in "/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/" but to make it the default JDK I had to set JAVA_HOME system variable in .bash_profile in home directory to "/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/" so its up and running now thanks to serkan's idea


export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile.
D
Derek Lee

In case you have multiple Java versions installed, use:

$ /usr/libexec/java_home --verbose

or:

$ /usr/libexec/java_home -V (That's an uppercase V!)

to list all versions and architectures.

Sample output:

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

T
Tal Hakmon

Try to check in here
/Library/Java/JavaVirtualMachines


u
user9869932

if you are using sdkman

you can check it with sdk home java <installed_java_version>

$  sdk home java 8.0.252.j9-adpt
/Users/admin/.sdkman/candidates/java/8.0.252.j9-adpt

you can get your installed java version with

$ sdk list java

P
PaulNUK

The System Preferences then Java control panel then Java then View will show the exact location of the currently installed default JRE.


export JAVA_HOME=$(/usr/libexec/java_home) at ~/.bash_profile
S
Suraj Rao

MacOS BigSur

Add following under .zshrc file. If .zshrc is not present, create and add.

export JAVA_HOME=`/usr/libexec/java_home`