ChatGPT解决这个技术问题 Extra ChatGPT

How to install a specific JDK on Mac OS X?

I want to install a specific JDK (the latest for example). For this, I went to the JDK download homepage: http://java.sun.com/javase/downloads/index.jsp. I looked for a Mac version, but I'm a bit surprised to only see downloadable versions for Linux, Windows and Solaris...

Here's the message for Mac:

"Apple Computer supplies their own version of Java. Use the Software Update feature (available on the Apple menu) to check that you have the most up-to-date version of Java for your Mac."

OK BUT... when I update Java with Mac I have a JRE and not a JDK...

I don't understand why a JDK version doesn't exist that is easily downloadable/installable (like a jar to unzip?) for Mac...

Famous question... you should accept an answer. ;)
Fink provides a solution for this.
Note that Java 7 is now supplied by Oracle - most of the answers and the questio refer to an earlier state

C
Cœur

In a comment under @Thilo's answer, @mobibob asked how to set JAVA_HOME in your .bash_profile on a Mac. Answer:

export JAVA_HOME=`/usr/libexec/java_home` 

This will dynamically assign to JAVA_HOME the location of the first JDK listed in the "General" tab of "Java Preferences" utility.

See Apple Technical Q&A 1170: https://developer.apple.com/library/content/qa/qa1170/_index.html

EDIT:

If you prefer parentheses to backticks for command substitution, this also works:

export JAVA_HOME=$(/usr/libexec/java_home)

J
Jesper

As the message says, you have to go to Apple, not Sun, for Java on the Mac. As far as I know, Apple JDK 6 is installed by default on Mac OS X 10.6 (Snow Leopard). Maybe you need to install the developer tools from your Mac OS X installation DVD (the dev tools are an optional install from the OS DVD).

See: http://developer.apple.com/java/

NOTE This answer from 16 Oct 2009 is now outdated; you can get the JDK for Mac OS X from the regular JDK download page on Oracle's website now.


R
Roy Calderon

For people using any LION OS X 10.7.X

They uploaded Java SE 6 version 1.6.0_26 available here

http://support.apple.com/kb/dl1421


Aaand, they replaced it with _29, which has the MS SQL bug. Great. :(
P
Peter Mortensen

I bought a MacBook Pro yesterday (Mac OS X v10.8 (Mountain Lion)) and there is no JDK installed by default...

As well as javac, I also found it didn't have packages such as SVN installed. It turns out you can get everything from the Apple developer page (you will need to register with your AppleID). SVN is part of the "Command Line Tools" package.

https://i.stack.imgur.com/9LhiY.png

This is what happens on a fresh MacBook:

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

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

Hopefully this will help out other newbies like me ;)


+1. The situation has changed a bit with Mountain Lion. Also note that while Apple offers the optional Java install, it is only of the older Java 6. Current versions of Java for OS X are now distributed by Oracle itself.
P
Peter Mortensen

The explanation is that JDK is a bit specific and does not contain the library tools.jar. For my development, I need this library and Mac's JDK doesn't provide it:

(Cf. http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/02-JavaDevTools/JavaDevTools.html)

tools.jar does not exist. Classes usually located here are instead included in classes.jar. Scripts that rely on the existence of tools.jar need to be rewritten accordingly.

It sucks!


Ahhhhhhh!!! As you discovered, tools.jar is already included in the runtime for Mac OS X. So looking for tools.jar isn't the right approach on Mac to know if it's a JDK or JRE :)
Thanks for your response, you are right. My need was to get the tools.jar lib for a specific project and for me it was an approach to recognize a jdk ;)
s
solomkinmv

The easiest way is to use Homebrew. Install Homebrew and then:

brew tap caskroom/versions
brew cask install java7

You can list all available versions using the following command: brew cask search java


E
Evan

Compiling with -source 1.5 -target 1.5 (in a JDK 6 environment) will honor only language elements that were in 1.5 and prior. Great. But there were no language changes in 6 anyway. Problem with this approach (on Mac with 1.6) is that using classes that came AFTER 1.5 will still compile because they exist in the rt.jar. So one could run in a 1.5 env and get a class not found exception with no prior warning when compiling. I found this out the hard way with javax.swing.event.RowSorterEvent/Listener. Both entered "Since 1.6" but are not caught with -source 1.5


P
Ponderous

If you installed brew, cmd below will be helpful:

brew cask install java


Brew? Do you mean Homebrew?
P
Peter Mortensen

As of Mac OS X v10.6 (Snow Leopard), you can run Java 6 in 32-bit mode on either 32-bit or 64-bit Intel processor equipped Macs.

If you cannot upgrade to Snow Leopard, Soy Latte is a pre-compiled version of Java 6 for Intel 32-bit.


M
Meng Lu

There are various tricky issues with having multiple versions of Java (Apple's own Java 6 and Oracle JDK 7 or even 8) on one's Mac OS X system, and using different versions for different applications. I spent some time writing up my experience of my experience of installing and configuring various versions of JDK on Mac OS X 10.9.2.


R
Rishikesh Darandale

Check this awesome tool sdkman to manage your jdk and other jdk related tools with great ease!

e.g.

$sdk list java
$sdk install java <VERSION>

L
LCC

Since most answers are out of date, here's what works as of end of 2018 under the assumption that

You want to install the GPL version of OpenJDK.[0] You do not want to install Homebrew

In that case, grab the desired version from one the many available, freely usable OpenJDK editions, e.g.:

AdoptOpenJDK

Amazon Corretto (Great for production, includes backports)

Oracle GPLv2 OpenJDK

Some of these include installers, but if not you can do the following. Assuming here version 11.0.1 for Mac. In your favorite shell, run:

tar -xzf openjdk-11.0.1_osx-x64_bin.tar.gz
sudo mv jdk-11.0.1.jdk /Library/Java/JavaVirtualMachines
# Fix owner and group
sudo chown -R root:wheel /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk
# (Optional) Check if the new JDK can be found
/usr/libexec/java_home
=> /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home

[0] Note that the Oracle branded JDK has significant licensing restrictions allowing you its use basically only for testing, i.e., not for production. If you do not have a support agreement with Oracle, then it seems risky to me to use their JDK, especially since the differences to OpenJDK are minimal.

Edit: added more choices


I suggest you point out downloading from AdoptOpenJDK.net, and then follow your instructions, thereby avoiding the legal & support issues of Oracle’s releases.
f
freedev

In 2022, give a try to sdkman, is better than brew

curl -s "https://get.sdkman.io" | bash

then open a new shell and try list to see what you could install ;-)

sdk list java 

At time of writing you could use:

sdk install java 17.0.1-tem

Or simply brew install openjdk if you would like to install a latest stable version.
@Datageek right. Thanks for the suggestion
C
Community

I think this other Stack Overflow question could help:

How to get JDK 1.5 on Mac OS X

It basically says that if you need to compile or execute a Java application with an older version of the JDK (for example 1.4 or 1.5), you can do it using the 1.6 because it is backwards compatible. To do it so you will need to add the parameter -source 1.5 and/or -target 1.5 in the javac options or in your IDE.


P
Peter Mortensen

JDK is the Java Development Kit (used to develop Java software).

JRE is the Java Runtime Environment (used to run any .jar file 'Java software').

The JDK contains a JRE inside it.

On Windows when you update Java, it updates the JRE automatically.

On Mac you do not have a JRE separated you have it, but inside the JDK, so when you update Java it will update your JRE which is inside your JDK; it doesn't install an JDK for you. You need to get it from somewhere else.


I think you meant JDK instead of IDK. I tried editing but Stack Overflow said the edits need to be longer than 6 characters. Just mentioning it to avoid confusion.
T
Thorbjørn Ravn Andersen

As a rule you cannot install other versions of Java on a Mac than those provided by Apple through Software Update. If you need Java 6 you must have a 64-bit Intel computer. You should always have Java 5 and 1.4 and perhaps 1.3 installed if you have at least OS X 10.4.

If you have VERY much elbow grease and is willing to work with beta software you can install the OpenJDK under OS X, but I don't think you want to go there.


I know, that's why I added that comment. Maybe should have written a bit longer comment to go with the link :-)