How to install Java 8 on Mac
Asked Answered
L

34

1285

Editors note: This question was asked in 2014, and the answers may be outdated.


I want to do some programming with the latest JavaFX, which requires Java 8. I'm using IntelliJ 13 CE and Mac OS X 9 Mavericks. I ran Oracle's Java 8 installer, and the files look like they ended up at

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk

but previous versions are at

/System/Library/Java/JavaFrameworks/jdk1.6....

Not sure why the latest installer puts this in /Library instead of /System/Library (nor what the difference is). But /usr/libexec/java_home doesn't find 1.8, so all the posts I've found on how to set your current java version don't work. I've tried adding a symbolic link to make it look like 1.8 is in the /System/Library... path, but it doesn't help. /usr/libexec/java_home -V still only lists the old Java 1.6.

Ironically, the "Java" control panel under System Preferences shows only Java 1.8!

Why doesn't Oracle's installer put it where it really goes? And how can I work around this problem?

Lili answered 21/6, 2014 at 15:5 Comment(6)
It "really goes" where it ended up -- /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/. The previous one was where the Apple-provided Java versions went, and as Apple doesn't provide Java any more the install location has changed.Il
Similar: How to use jdk without jre in Java 11Hark
brew install openjdk@8Shardashare
brew install --cask temurin8 # Temurin is the official successor to adoptopenjdkDarryldarryn
Update on 2022/8: install it with " brew install --build-from-source openjdk@8"Serna
As of 2022/09: OpenJDK Java 8 installer is available from Eclipse Temurin project - adoptium.net/temurin/releases/?version=8 . This does not require homebrew installed.Flitch
B
2262

Oracle has a poor record for making it easy to install and configure Java, but using Homebrew, the latest OpenJDK (Java 14) can be installed with:

brew install --cask adoptopenjdk8

For the many use cases depending on an older version (commonly Java 8), the AdoptOpenJDK project makes it possible with an extra step.

brew tap adoptopenjdk/openjdk
brew install --cask adoptopenjdk8

Existing users of Homebrew may encounter Error: Cask adoptopenjdk8 exists in multiple taps due to prior workarounds with different instructions. This can be solved by fully specifying the location with brew install --cask adoptopenjdk/openjdk/adoptopenjdk8.

Blockage answered 20/2, 2015 at 18:8 Comment(40)
I had to run this multiple times before the the dmg would download from oracle, each time it continued at the last point it left off.Ozieozkum
@Ozieozkum - was probably a network issue. +1 for mentioning jenvLannielanning
As of December 2015, it is now unnecessary to install cask manually as it is now part of homebrew's installation. So after updating homebrew via brew update, you are set to use brew cask.Thirsty
Thanks, it's amazing how horrible the Java installation process using the "official" links/docs are.Halette
@Blockage - I suggested an edit that would update your answer to what davetw12 said. It was rejected because reviewers felt it was too different from your answer. Would you be willing to make your answer a shared answer so we can make this right and current? Or otherwise accept the edit?Saxen
@tandrewnichols I just ran brew cask install java on my El Capitan Mac and it's downloading jdk-8u112-macosx-x64.dmg.Paronomasia
If having anymore issue with JRE or JDK try gist.github.com/johan/10590467Tushy
it DOES install JDK. brew cask info javaRegional
In contrast to @tandrewnichols I found this procedure installed JDK as well as the runtime - so full Java support.Hazem
If you installed java using the Oracle updater and want Homebrew to manage it, do I have to fully uninstall the Oracle Java first?Vinylidene
brew cask install java installed jdk ftwBeatabeaten
Note that as of October 2017, the default brew command (as well as most of those in the comments) will install whatever is the latest major version JDK (i.e. java 9) rather than a specific older one (for example, Java 8 as in the OP). See this helpful blog post for a description of how to use brew to install an earlier version of Java if needed. lonecpluspluscoder.com/2017/10/08/…Evelinaeveline
What is cask significance here ?Elf
In case others missed this, the brew cask install java8 approach installs java in /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java.Fascicle
3/28/18 - try: brew install caskroom/version/java8Christen
Error: Cask 'java8' is unavailable: No Cask with this name exists.Brume
I had to use the following commands brew tap homebrew/cask-versions; brew cask install java8Delinquent
What happens if I install java via brew, and java was already installed from some other method? Will brew handle this ok? Or do I need to explicitly uninstall first?Queer
brew cask install java8 Error: Cask java8 exists in multiple taps:Teresa
@Fascicle I install brew under ~/homebrew and hope the java can be installed under the ~/homebrew/bin, just like other apps, do you think it's possible and how to do that?Hijacker
This doesn't work anymore, see here for more details.Sprayberry
@WeiChingLin you can fix that by specifying which tap you want to install from. e.g. brew cask install caskroom/versions/java8 or brew cask install homebrew/cask-versions/java8. However, that wont work currently since oracle is phasing out their java8 download. See here for more details.Sprayberry
The workaround for now is to brew tap homebrew/cask-versions and use brew cask install homebrew/cask-versions/adoptopenjdk8Sprayberry
It is not possible to install Java8 using Brew anymore because of Oracle license changes. Java8 is not public anymore for download.Tradelast
See this answer below for further details.Sprayberry
Java8 is not available for brew / cask anymore: github.com/Homebrew/homebrew-cask-versions/issues/7253Erythromycin
Cask 'java8' is unavailable: No Cask with this name exists.Fibered
Why not rely on the Oracle installer? Has worked for me so far.Flitch
Great advice to install jenv, makes it a lot easier to manage several versions of java. I am always wary of zapping anything installed into macOS by Apple, and with jenv, you can keep everything nicely separated.Redeeming
Latest workaround requires brew tap adoptopenjdk/openjdk followed by brew cask install adoptopenjdk8. That may fail with "Error: Cask adoptopenjdk8 exists in multiple taps" because you already attempted this another way, so specify exact location with brew cask install adoptopenjdk/openjdk/adoptopenjdk8Chinchin
Ran these commands, but the wrong version of openjdk is on my machine: java --version openjdk 12.0.1 2019-04-16 OpenJDK Runtime Environment (build 12.0.1+12) OpenJDK 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)Decretory
If you have multiple versions of open jdk installed and want to change default version: /usr/libexec/java_home -V and then export JAVA_HOME='usr/libexec/java_home -v 1.8.0_232' used example versionRiha
On reinstall I had to enter my password 300 times for it to reinstall properly - I guess I needed to give permission to overwrite a bunch of existing files.Frederiksberg
brew cask remove java; brew cask install adoptopenjdk8; java -versionFlapdoodle
openJDK does not contain JavaFXNara
After following these steps, you may still need to define JAVA_HOME so it points to the brew installed java8. What worked for me was export JAVA_HOME=$(/usr/libexec/java_home -v1.8)Riflery
How to install specific build of AdoptOpenJdk8Coping
brew install --cask adoptopenjdk/openjdk/adoptopenjdk8 worked for me, I am on a mac Monterey with Apple M1 chip.Csch
This answer appears to be out of date by now; other answers give more up-to-date instructions.Marsipobranch
Error: brew cask is no longer a brew command. Use brew <command> --cask instead. Using brew install --cask instead gives this error: Error: Cask 'adoptopenjdk8' definition is invalid: 'appcast' stanza failed with: Calling the appcast stanza is disabled! Use the livecheck stanza instead. Please report this issue to the adoptopenjdk/openjdk tap (not Homebrew/brew or Homebrew/homebrew-core), or even better, submit a PR to fix it: /opt/homebrew/Library/Taps/adoptopenjdk/homebrew-openjdk/Casks/adoptopenjdk8.rb:9Stein
T
874

Note: Oracle Java 8/9/10 is no longer available for public download (license change).

First install and update brew from Terminal:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brew tap homebrew/cask-versions

brew update

NEW as of June 2019

To install the JDKs from AdoptOpenJDK:

brew tap adoptopenjdk/openjdk

brew install --cask adoptopenjdk8
brew install --cask adoptopenjdk9
brew install --cask adoptopenjdk10
brew install --cask adoptopenjdk11

OLD

Java 8:

brew install --cask java8

Java Latest:

brew install --cask java
Town answered 27/9, 2015 at 17:57 Comment(29)
Interesting to note that this did not work for me on Mavericks, so it did not answer the OP's question, but it did work for me on Captain, so it was useful as an answer..Devy
For me, in El Kapitan, it would only download a few extra percent each time I ran it, so I ran it in a loop (in fish shell) and it eventually worked. while math "$status == 1"; brew install Caskroom/cask/java; endKafir
This works, but I did have to brew install Caskroom/cask/java many times because the transfer kept closing: curl: (18) transfer closed with 34724700 bytes remaining to readPrimine
Didn't work for me on Yosemite (OSX v10.10.5). I get Error: Cask 'java' definition is invalid: Bad header line: parse failed ... Seems like this works only for El Capitan and not for any version preceding version of OSX (Yosemite, Mavericks..., )Olette
I'm also getting the parse failed error, and I'm on El Capitan. Has anyone else encountered this and/or found a solution?Temporal
Oracle official site is giving weired errors, this is life saviorRapid
I installed homebrew fresh on a new OS X El Capitan machine and didn't have to run the brew tap command in the answer above. The first and third commands were sufficient.Cymbiform
brew cask install caskroom/versions/java8Rutheruthenia
Works on 10.8 after apple git is replaced with homebrew git. :) Very nice.Mccarthy
Anyone wanting Java 7: java7 is not available in cask versions, but zulu7 appears to work instead. github.com/Homebrew/homebrew-cask/issues/9447Month
Error: Cask 'java8' is unavailable: No Cask with this name exists.Varix
Use brew tap caskroom/versions before to avoid this errors. @VarixProficient
On Mac OSX Sierra brew cask install caskroom/versions/java8Stoop
curl: (22) The requested URL returned error: 404 Not Found Error: Download failed on Cask 'java8' with message: Download failed: https://download.oracle.com/otn-pub/java/jdk/8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-macosx-x64.dmgInterventionist
Error: Cask 'java8' is unavailable: No Cask with this name exists.Fibered
This worked perfectly in Aug 2019. Steps: 1. brew tap adoptopenjdk/openjdk 2. brew cask installadoptopenjdk/openjdk/adoptopenjdk8Monotype
$ brew cask install adoptopenjdk8 Error: Cask adoptopenjdk8 exists in multiple taps: caskroom/versions/adoptopenjdk8 adoptopenjdk/openjdk/adoptopenjdk8 . I have to use brew cask install adoptopenjdk/openjdk/adoptopenjdk8Ashbey
just to follow from @Ashbey previous comment. It appears as though the adoptopenjdk versions are now in the caskroom/versions tap as well. So you could just do brew tap caskroom/versions and brew cask install adoptopenjdk8, skipping the adoptopenjdk tap. Might be useful if you've already tapped and updated caskroom/versions.Reinstate
brew tap homebrew/cask-versions and brew cask install adoptopenjdk8 works for me on Hi Sierra 10.13.6Reconcilable
Thank you for this. This also solves the error in Catalina " Java for macOS 2017-001 can’t be installed on a disk. A newer version of this package is already installed.".Arria
@Town Is there way to install it so without Sudo? Using above methods, it's trying to use usr/local/ space, even when I specified --appdir=~/Applications?Biflagellate
how do i set the JAVA_HOME path for the openjdk8??Sprit
As @ kavehmb says, 1.$/usr/bin/ruby -e "$(curl -fsSL raw.githubusercontent.com/Homebrew/install/master/install)" $brew tap homebrew/cask-versions $brew update $brew tap adoptopenjdk/openjdk $brew cask install homebrew/cask-versions/adoptopenjdk8 (Or brew cask install adoptopenjdk/openjdk/adoptopenjdk8) That works for me on macOS 10.12.6 Sierra.Dissimilar
Adding this for people using newer mac versions Warning: The Ruby Homebrew installer is now deprecated and has been rewritten in Bash. Please migrate to the following command: /bin/bash -c "$(curl -fsSL raw.githubusercontent.com/Homebrew/install/master/install.sh)"Elgar
I believe the first command (to install "the latest OpenJDK") be brew install --cask adoptopenjdk and not brew install --cask adoptopenjdk8 which will install JSK 8 not latest? also the latest is now 15 (as of Sep 2020). Also, Iit may help others to include brew tap adoptopenjdk/openjdk before the first command, as folks trying the install w/o the tap are getting errors.Stylist
What's the point to install adoptopenjdk8~adoptopenjdk11 at one time?Rant
damn this was never this easy even on windows! no path setting, Android Studio ready right after just install. Best ever Java install on a new machine, specially Mac!Magnoliamagnoliaceous
Your first sentence is quite incorrect. Oracle provides two downloads of Java 8 Update 311: (a) the regular product Oracle JDK, and the cutting-edge new technology product, GraalVM Enterprise.Hark
@BasilBourque I guess it was correct back in 2015...Town
R
167

Java8 is no longer available on homebrew, brew install java8 will not work.

Instead, use:

brew cask install adoptopenjdk/openjdk/adoptopenjdk8

See this commit for technical details.

Please note as well you may see issues around Cask adoptopenjdk8 exists in multiple taps. This is a known issue, currently being worked on, which you can see here:

https://github.com/AdoptOpenJDK/homebrew-openjdk/issues/106

For those who don't want to run through the details, here is a summary:

# To install JDK8
brew cask install adoptopenjdk/openjdk/adoptopenjdk8

# To be able to safely run 'brew cleanup'
brew untap adoptopenjdk/openjdk
brew untap caskroom/versions
brew cleanup
Rinaldo answered 20/4, 2019 at 14:2 Comment(10)
Is there any difference in using AdoptOpenJDK/openjdk instead of using homebrew/cask-versions/adoptopenjdk8Sprayberry
I get the following when I try your answer: Cask adoptopenjdk8 exists in multiple taps: caskroom/versions/adoptopenjdk8 adoptopenjdk/openjdk/adoptopenjdk8Garin
@KorayTugay I have updated the answer, this should solve your issues!Rinaldo
@SeanBreckenridge - the HomeBrew team are working on it, at the moment it looks like AdoptOpenJDK will be used, but there is still some uncertainty, see the currently open issue github.com/AdoptOpenJDK/homebrew-openjdk/issues/106 for details!Rinaldo
brew cask install homebrew/cask-versions/adoptopenjdk8 worked for meHakeem
Once you have it installed and you want to set JAVA_HOME, where do you point it to?Turmel
@EvanZamir export JAVA_HOME=`/usr/libexec/java_home`Elrod
brew cask install adoptopenjdk8 doesn't need tapping.Flapdoodle
this worked for me brew install --cask adoptopenjdk/openjdk/adoptopenjdk8Vacation
brew install --cask adoptopenjdk/openjdk/adoptopenjdk8 worked for MacOS Monterey, 12.1. cask is no longer a brew command, see here, #66286588Richela
K
160

In 2023, you can use just brew

brew install openjdk@8

Apple silicon users should execute this first

env /usr/bin/arch -x86_64 /bin/zsh --login

and maybe you need to update PATH env:

export PATH="/usr/local/opt/openjdk@8/bin:$PATH"

…for the future 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 to install java 8 you could use:

sdk install java 8.0.322-tem 

NOTE: Update the install command to match some existing Identifier show from running sdk list java

Keefe answered 29/1, 2021 at 15:22 Comment(16)
$ jenv add /usr/local/opt/openjdk@11 => ln: /Users/nakilon/.jenv/versions/openjdk64-11.0.9: No such file or directory. Ah, ok, needed to run those commands that are going to bash_profile.Etana
Have you run brew before jenv?Keefe
the brew method worked also had to update the path variablesBuhr
you need to run export PATH="/usr/local/opt/openjdk@8/bin:$PATH" after installing brew list for install packages brew info $package_name for information of packageProximo
I think I messed up somewhere, after doing this, I got Unrecognized option: --version Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit., while trying to do java --versionSheave
@Sheave it’s a little weird. Maybe you have a mess with the PATH env, or many JDK installed in different ways. It’s hard to give you a hand from here.Keefe
as simple as that!Oraliaoralie
Had to do brew install --build-from-source openjdk@8 to make it workUdo
sdkman is a blessingConsultant
Sdk is the only answer worked for me. However, java 8.0.322-tem is no longer there. I have to use sdk install java 8.0.352.fx-librcaCulbert
@Culbert Thanks for sharing. At the time I wrote the post 8.0.322-tem was available.Keefe
On M2 mac, : Error: openjdk@8: An unsatisfied requirement failed this build. poppedTina
@AayushShah thanks for letting me know. Now I still have an Intel... if you figure out please update the answer or write a comment here.Keefe
Just followed the three steps with sdkman and it worked perfectly. Thanks.Gunflint
openjdk@8: The x86_64 architecture is required for this software.Epistemology
@ClaytonRabenda thanks for pointing out. I'll update the answer for Macos silicon usersKeefe
F
130

I just did this on my MBP, and had to use

$ brew tap homebrew/cask-versions
$ brew cask install java8

in order to get java8 to install.

Flimflam answered 4/10, 2017 at 13:46 Comment(11)
How does that help?Lustral
It helped me with installing specific version of java. Now when java 9 is out, running "brew cask install java" installs java 9. "brew cask install java8" wasn't working for me until I ran "brew tap caskroom/versions".Bernard
Yes, brew tap caskroom/versions is required before installing java8Grille
or just brew install homebrew/cask-versions/java8 for the win!Nature
It is not possible to install Java8 using Brew anymore because of Oracle license changes. Java8 is not available for public download anymore.Tradelast
Oh no! That must be very recent, because this workflow was working for me when I did it on my personal laptop just a couple weeks ago.Flimflam
See https://mcmap.net/q/46504/-how-to-install-java-8-on-osx-macos-mojave-with-homebrew if you still want to use java8. Note that this uses OpenJDK though.Everard
Looks like since Oracle's Java went license-only, my homebrew has started installing Open JDK for me by default.Flimflam
Error: Cask 'java8' is unavailable: No Cask with this name exists.Fibered
@Fibered how about this brew cask install adoptopenjdk8 ?Schou
This answer appears to be out of date by now; other answers give more up-to-date instructions.Marsipobranch
J
88

Assumption: Mac machine and you already have installed homebrew.

Install cask (with Homebrew 0.9.5 or higher, cask is included so skip this step):

$ brew tap caskroom/cask
$ brew tap caskroom/versions

To install latest java:

$ brew cask install java

To install java 8:

$ brew cask install adoptopenjdk/openjdk/adoptopenjdk8

If you want to install/manage multiple version then you can use 'jenv':

Install and configure jenv:

$ brew install jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

Add the installed java to jenv:

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.11.0_2.jdk/Contents/Home

To see all the installed java:

$ jenv versions

Above command will give the list of installed java:

* system (set by /Users/lyncean/.jenv/version)
1.8
1.8.0.202-ea
oracle64-1.8.0.202-ea

Configure the java version which you want to use:

$ jenv global oracle64-1.6.0.39

To set JAVA_HOME:

$ jenv enable-plugin export
Jolynjolynn answered 18/1, 2019 at 12:29 Comment(5)
Best solution! Thank you!Obreption
Thank you. Starts with short and to the point solution and continues with another useful tool: 'jenv' is handy to have around and is missing from most other answers. Helped with packaging Scala (2.12/2.13) code in 2020.Papua
Works like a charm, brew cask install adoptopenjdk/openjdk/adoptopenjdk8Deberadeberry
This is the best answer indeed! Ideal for folks (like me) who have and need to manage multiple versions of javaCohlette
2022: Mac 12.x : brew cask` is no longer a brew command. Use brew <command> --cask instead. brew install adoptopenjdk/openjdk/adoptopenjdk8 --caskBenita
T
70

An option that I am starting to really like for running applications on my local computer is to use Docker. You can simply run your application within the official JDK container - meaning that you don't have to worry about getting everything set up on your local machine (or worry about running multiple different versions of the JDK for different apps etc)

Although this might not help you with your current installation issues, it is a solution which means you can side-step the minefield of issues related with trying to get Java running correctly on your dev machine!

The benefits are:

  1. No need to set up any version of Java on your local machine (you'll just run Java within a container which you pull from Docker Hub)
  2. Very easy to switch to different versions of Java by simply changing the tag on the container.
  3. Project dependencies are installed within the container - so if you mess up your config you can simply nuke the container and start again.

A very simple example:

Create a Dockerfile:

FROM java:8
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
  • Here we are specifying the Java container running version 8 of the SDK (java:8 - to use Java 7, you could just specify: java:7)
  • We are mapping the local directory with the directory: /usr/src/myapp inside the container

Create a docker-compose.yml file:

version: "2"

services:
  java:
    build: .
    volumes:
      - .:/usr/src/myapp

Now, assume we have this Java file:

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {        
        System.out.println("Hello, World");
    }
}

So we have the following file structure:

.
|_ Dockerfile
|_ docker-compose.yml
|_ HelloWorld.java

You can do various Java things like:

compile:

docker-compose run --rm java javac HelloWorld.java 
  • You should note that the HelloWorld.class shows up in your current directory (this is cause we've mapped the current directory to the location inside the container where our code exists

run:

docker-compose run --rm java java HelloWorld 
  • Note: the first time you run this it will fetch the image etc. This will take a while - it only happens the first time
  • docker-compose run - runs a command from within the container
  • -rm tells docker to remove the container once the command is finished running
  • java is the name of the service/container (from our docker-compose file) against which this command will run
  • the rest of the line is the command to run inside the container.

This is quite a cool way of dealing with running different versions of Java for different apps without making a complete mess of your local setup :).

Here is a slightly more complex example which has Maven and a simple Spring app

Disclaimer:

Tardiff answered 14/4, 2016 at 12:31 Comment(3)
Good example using Docker, not sure why you got a downvote before.Kistner
I'd imagine the downvote because this does not answer the question of running Java on OS X/MacOS. Answering "How do I do this on platform X" with "Just use a VM/shim to do it on platform Y" is not productive.Michaelmas
especially for native java development (e.g. using SWIG, JNI and LIBRARY_PATH)Arborescent
H
29

tl;dr

/Library/Java/JavaVirtualMachines/ is the correct location for the JVM to be installed. This has been the case for several years now. Many years ago, other locations were used, but no longer.

You have a choice of several vendors to obtain an installer app to install a Java implementation on your Mac. Download an installer to run locally and then discard, as you commonly do for many apps.

Your Question mentions JavaFX/OpenJFX. You might find it convenient to use a Java implementation that comes bundled with the OpenJFX libraries, such as LibericaFX from BellSoft or ZuluFX from Azul Systems.

Use the Installer, Luke

Other answers suggesting the Homebrew package manager seem a bit extreme to me. I am sure Homebrew has some good uses. But to simply run Java, or do Java programming, installing Homebrew is a needless extra step. Installing Homebrew (package manager) for the single goal of obtaining Java is like building a landing strip to park your car instead of using your driveway. If you already have it, fine, use it. But suggesting Homebrew to those who simply need Java is poor advice.

People not already using Home-brew can simply download a Mac installer from a trusted source.

You have multiple sources to obtain an easy-to-use installer app to put Java on your Mac. Run the installer on your Mac just as you do for many other apps.

Here is a flowchart diagram for finding a source of Java 11, some of which also offer Java 8.

Flowchart guiding you in choosing a vendor for a Java 11 implementation

Download an installer from a vendor such as Adoptium(AdoptOpenJDK.net).

Download page at AdoptOpenJDK.net

Run the installer.

screenshot of installer running

JavaVirtualMachines folder is now correct

Why doesn't Oracle's installer put it where it really goes? And how can I work around this problem?

Not a problem.

The folder /Library/Java/JavaVirtualMachines/ is the new home for JVMs on macOS.

screenshot of the folder "/Library/Java/JavaVirtualMachines/" in the Finder

To install a JVM, use an installer, discussed below.

To uninstall, simply use the Finder to delete a JVM from that folder. You will be prompted for system admin password to complete the removal.


Java 9 & 10 & 11

Back in 2010, Apple joined the OpenJDK project, along with Oracle, IBM, Red Hat, Azul, and other Java vendors. Each member contributes source code, testing, and feedback to the unified OpenJDK codebase.

Apple contributed most of its Mac-specific code for its JVM. Now Apple no longer releases its own Mac-specific JVM. You now have your choice of JVM supplier, with builds coming from the OpenJDK codebase.

You will find source code at: http://openjdk.java.net

New release cadence

Be aware that in 2017, Oracle, the JCP, and OpenJDK have adopted a new rapid “release train” plan for regularly-scheduled versions of Java to be delivered in a predictable manner.

Read this 2018-07 Azul Systems blog post for many details, Eliminating Java Update Confusion by Simon Ritter.

Also read Java Is Still Free.

Vendors

For a rather exhaustive list of past and present JVM implementations, see this page at Wikipedia.

Here is a discussion of a few vendors. See the flowchart above for more vendors

Oracle JDK

Oracle provides JDK and JRE installers for multiple platforms including macOS.

Over the years since acquiring Sun, Oracle has combined the best parts of the two JVM engines, HotSpot and JRocket, and merged them into the OpenJDK project used as the basis for their own branded implementations of Java.

Their new business plan, as of 2018, is to provide a Oracle-branded implementation of Java for a fee in production, and at no cost for use in development/testing/demo. Support for previous releases requires a paid support program. They have declared their intention for their branded release to be at feature-parity with the OpenJDK release. They have even donated their commercial add-ons such as Flight Recorder to the OpenJDK project.

Oracle also releases a build of OpenJDK with no support: http://jdk.java.net/

Oracle has produced a special purpose JDK, GraalVM.

Zulu & Zing by Azul

Azul Systems provides a variety of JVM products.

  • Their Zulu line is based directly on OpenJDK, and is available at no cost with optional paid support plans.
  • Their Zing line offers commercial JVM products enhanced with alternate technical implementations such as a specialized garbage-collector.

Both of their lines offer installers for macOS.

I am currently use Zulu for Java 10.0.1 on macOS High Sierra with IntelliJ 2018.2 and Vaadin 8. I downloaded from this page. By the way, I do not find any Java-related items installed on the Apple System Preferences app.

Adoptium

Adoptium, formerly known as AdoptOpenJDK, is a community-led effort to build binaries of the OpenJDK source. Many of the other vendors of Java implementations support this work at Adoptium.

  • Your choice of either HotSpot or OpenJ9 engine.
  • Builds available for macOS, Linux, and Windows, and other platforms.

OpenJ9 by Eclipse

The OpenJ9 project is an another implementation of the JVM engine, an alternative to HotSpot.

Now sponsored at the Eclipse Foundation, with technology and backing donated by IBM in 2017.

For prebuilt binaries, they refer you to the AdoptOpenJDK project mentioned above.

Motivations in choosing a vendor for Java


How to install

The installers provided by Oracle or by Azul are both utterly simple to operate. Just run the installer app on your Mac. A window appears to indicate the progress of the installation.

When completed, verify your JVM installation by:

  • Visiting the /Library/Java/JavaVirtualMachines/ folder to see an item for the new JVM.
  • Running a console such as Terminal.app and type java -version to see the brand and version number of your JVM.

After verifying success, dismount the .dmg image in the Finder. Then trash the .dmg file you downloaded.

Hark answered 4/8, 2018 at 1:38 Comment(4)
This answer is odious. Just use brew cask install adoptopenjdk8.Signally
@user3562927 Installing Homebrew (package manager) for the single goal of obtaining Java is like building a landing strip to park your car instead of just using your driveway. If you already have it, fine, use it. But suggesting Homebrew to those who simply need Java is poor advice. Apparently you are not the only easily-offended Homebrew fan, given the 5 down-votes left on this Answer without explanation. But I stand by my recommendation.Hark
@BasilBourque brew is more useful than you think. It installs a lot of software so much easier, your answer is a proof for that :-/Flareup
@DanielW. The Question did not ask for a Brew solution, and did not even mention Brew. The Question asked about installing Java. There are several important issues to consider in installing Java; those issues I tried to cover. Apparently I have offended some Brew fans — that was not my intention. My intention was to pointedly address the Question at hand, as is the practice on Stack Overflow. And I stand by my position: Installing Brew just to install Java is overkill. Furthermore, using Brew to install Java will limit choices and ignore issues when it comes to various Java implementations.Hark
F
25

I'm having the same problem to solve, because I need to install JDK8 to run Android SDK Manager (because it seems that don't work well with JDK9). However, I tell you how I solve all problems on a Mac (Sierra).

First, you need brew with cask and jenv.

  1. You can find an useful guide here,Homebrew Cask Installation Guide. Remember to tap 'caskroom/versions' running in the terminal: brew tap caskroom/versions
  2. After that, install jenv with: brew install jenv
  3. Install whatever version you want with cask brew cask install java8 (or java7 or java if you want to install the latest version, jdk9)
  4. The last step is to configure which version to run (and let jenv to manage your JAVA_HOME) jenv versions to list all versions installed on your machine and then activate the one you want with jenv global [JDK_NAME_OF_LIST]

You could find other useful informations here on this Github Gist brew-java-and-jenv.md, on this blog Install multiple JDK on a Mac and on Jenv Website

Fabozzi answered 28/9, 2017 at 5:19 Comment(1)
jenv is quite easy and super useful. I have multiple projects that need java 8 and 11Adrea
C
23

If you have several Java versions on your machine and you want to choose it dynamically at runtime, i.e, in my case, I have two versions:

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

You can change them by modifying the /etc/profile content. Just add (or modify) the following two lines at the end of the file:

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

In my case, it should be like the following if I want to use:

Java 7:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Java 8:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

After saving the file, please run source /etc/profile and it should work. Here are results when I use the first and second option accordingly:

Java 7:

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java 8:

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

The process is similar if your java folder is located in different locations.

Corposant answered 5/2, 2018 at 9:15 Comment(1)
Why not making an alias for different version, like alias java8=/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/bin/java?Midyear
C
23

Please, run the following commands and it will install Java 8 on OS X:

brew tap adoptopenjdk/openjdk
brew install --cask homebrew/cask-versions/adoptopenjdk8

Note:

adoptopenjdk8 has been officially discontinued upstream. It may stop working correctly (or at all) in recent versions of macOS. So, this is working at the moment, but, please, don't use this answer to install Java 8

Cimino answered 28/6, 2020 at 13:11 Comment(2)
Glad that helped you :)Cimino
should be the only accepted solution, works like charm.Myriam
C
22

It seems that nobody has mentioned SDK man (https://sdkman.io/) yet.

SKD man allows installing multiple versions of Java on Mac and easy switching between these versions. More information is available at https://sdkman.io/usage.

For example:

$ sdk list java                                                                                                                                                                                                                       
================================================================================
Available Java Versions
================================================================================
   * 12.ea.20-open
     11.0.1-zulu
 > * 11.0.1-open
     10.0.2-zulu
     10.0.2-open
     9.0.7-zulu
     9.0.4-open
     8.0.192-zulu
     8.0.191-oracle
   + 8.0.181-oracle
     7.0.181-zulu
     1.0.0-rc-10-grl
     1.0.0-rc-9-grl
     1.0.0-rc-8-grl


================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

$ sdk install java 8.0.191-oracle

$ sdk use java 8.0.191-oracle

Using java version 8.0.191-oracle in this shell.                                                                                                                                                                                                      

$ java -version                                                                                                                                                                                                                        
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

$ sdk use java 11.0.1-open                                           

Using java version 11.0.1-open in this shell.

$ java -version                                                                                                                                                                                                                        openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
                                                                                                                                                                                                         ```


Circumflex answered 8/1, 2019 at 23:24 Comment(2)
I'm getting this pop-up : ---------------------------- Stop! java 8.0.191-oracle is not available. Possible causes: * 8.0.191-oracle is an invalid version * java binaries are incompatible with your platform * java has not been released yet ----------------------------Eaglestone
Indeed 8.0.191-oracle is not among the list anymore. You can use sdk list java to check other distributionsCircumflex
R
19
brew cask install caskroom/versions/java8
Rutheruthenia answered 3/3, 2018 at 21:56 Comment(0)
C
17

for 2021 (also 2022 and 2023) this one worked for me

brew tap homebrew/cask-versions


brew install --cask adoptopenjdk8
Chivers answered 25/1, 2021 at 19:48 Comment(2)
This worked in 2022 , after installation the following commands can be used to validate your installation java , java -version . The commands java --version and which java do not give proper results though.Unreserve
Small update to this. brew suggests to use brew install --cask temurin8 instead. (I did not realize Temurin made also Java 8 version)Iotacism
D
16

I have applications that use both Java 7 and 8 and have to go back and forth all the time.

I use this script written by Johan:

http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/

You can now set it at startup or call the script afterwards.
Install the JDK for Mac.

Java 7

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Java 8

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


Updated recommendation!!:

Use jenv https://www.jenv.be/ and homebrew.

Then its just jenv global oracle6401.6.0.39 and its set.

Dirtcheap answered 4/5, 2015 at 3:40 Comment(4)
+1: i use this script and i agree, it's pretty useful for devs who have multiple projects that require different versions of Java.Esteban
There is really no need to set any scripts as long as you only need to use a specific version system-wide. Basically all you need to do is add to your ~/.bashrc or ~/.bash_profile: export JAVA_HOME="/usr/libexec/java_home -v 1.8" and also add your $JAVA_HOME/bin to $PATH if the java installer didn't do it already. (NOTE: replace double quotes with backticks for /usr/libexec/java_home, can't enter literal backticks in comments..)Shel
if you want to install java 7 (along side java 8) via homebrew, the command is brew tap caskroom/versions followed by brew cask install java7.Guinna
jenv is a very convenient tool for managing multiple versions of Java, either globally or locally per-directory.Valley
P
11

Run these commands on mac High Sierra

brew update
brew tap caskroom/versions
brew cask install java8

and check with command

java -version
Pygmy answered 28/9, 2018 at 10:16 Comment(1)
Getting this: Error: Download failed on Cask 'java8' with message: Download failed: https://download.oracle.com/otn-pub/java/jdk/8u202-b08/1961070e4c9b4e26a04e7f5a083f551e/jdk-8u202-macosx-x64.dmgFlay
F
11

As of Year - 2021

brew install --cask adoptopenjdk/openjdk/adoptopenjdk8
Fizz answered 17/9, 2021 at 13:32 Comment(1)
This is the one that worked for me today.Porky
F
8

If you are on a Mac, then Homebrew is the way to install stuff.

It seems that version 8 is no longer the most recent, so it isnt available using the default brew cask install java.

Instead I managed by doing the following:

brew install homebrew/cask-versions/

If this fails, just try the next one directly:

brew install homebrew/cask-versions/adoptopenjdk8

Test with brew cask list or java -version

Frenchman answered 10/10, 2019 at 15:16 Comment(2)
+1, that works for me on macOS 10.12.6 Sierra. (Or brew cask install adoptopenjdk/openjdk/adoptopenjdk8)Dissimilar
+1 The first one failed (Error: No available formula with the name "homebrew/cask-versions/" ), but the second one seemed to work. Updated answer to avoid scaring people off with the first faillure.Getz
W
8

brew cask commands were disabled on 2020-12-21 with the release of Homebrew 2.7.0.

Use the below commands to install JDK

brew install --cask adoptopenjdk/openjdk/adoptopenjdk8

Whitebook answered 14/1, 2021 at 12:45 Comment(0)
P
7

Using brew

brew install Caskroom/cask/java
Prehuman answered 4/5, 2016 at 16:37 Comment(0)
S
7

Best way is to use Brew package manager but the command

 brew cask install java8

fails with error:

Error: No available formula with the name "java8" 

So use

brew cask install caskroom/versions/java8

How did I find "caskroom/versions/java8": using brew search command:

brew cask search java8
Sidereal answered 10/8, 2018 at 9:29 Comment(0)
C
7

If you are using it NOT for personal use, you might want to use OpenJDK instead to avoid any potential lawsuit from Oracle.

brew cask install adoptopenjdk8
Cultivator answered 16/5, 2019 at 21:24 Comment(1)
find /usr/local/Homebrew/Library/Taps/ | grep -i jdk | xargs rm -v if you happen the get the "Error: Cask adoptopenjdk8 exists in multiple taps:" error ...Amnesty
A
7

You can try this:

$ brew search jdk
$ brew install --cask homebrew/cask-versions/adoptopenjdk8
$ /usr/libexec/java_home

 

Annia answered 3/10, 2019 at 12:10 Comment(0)
K
5

Install with Homebrew

The version of Java available in Homebrew Cask previous to October 3, 2018 was indeed the Oracle JVM. Now however, it has now been updated to OpenJDK. Be sure to update Homebrew and then you will see the lastest version available for install.

1. install Homebrew if you haven't already. Make sure it is updated:

brew update

2. Add the casks tap, if you haven't already (or you are not seeing older Java versions anymore with step #3):

brew tap homebrew/cask-versions

3. and for the AdoptOpenJDK versions, add that tap:

brew tap adoptopenjdk/openjdk

These casks change their Java versions often, and there might be other taps out there with additional Java versions.

4. Look for installable versions:

brew search java 

or for AdoptOpenJDK versions:

brew search jdk     

5. Check the details on the version that will be installed:

brew cask info java

or for the AdoptOpenJDK version:

brew cask info adoptopenjdk

6. Install a specific version of the JDK such as java11, adoptopenjdk8, or just java or adoptopenjdk for the current. For example:

**brew cask install java**

**brew cask install java8**

**brew cask install java11**

You can use the fully qualified path to older versions as well:

brew cask install homebrew/cask-versions/java11
Katleen answered 17/5, 2020 at 0:53 Comment(1)
Presumably I did something wrong, but when trying to do java8 I got an error: Error: Cask 'java8' is unavailable: No Cask with this name exists.Getz
B
5

brew search openjdk find some openjdk formulae, in 2021, brew offer openjdk11 and openjdk8 as options.

Bulk answered 14/8, 2021 at 5:16 Comment(1)
what should be next command after searching?Rustler
L
5

MacOS Big Sur 2021 Java 8 installation guide:

  1. Go to https://profile.oracle.com/myprofile/account/create-account.jspx and sign up if not already;
  2. Go to https://www.oracle.com/java/technologies/downloads/#jdk17-mac
  3. Select "Java 8";
  4. Select "macOS";
  5. Press on "jdk-8u301-macosx-x64.dmg"; Java 8 download page
  6. Check the checkbox;
  7. Press "Download jdk-8u301-macosx-x64.dmg";
  8. Open the downloaded file;
  9. Follow installation guide;

Enjoy =)

Loydloydie answered 7/10, 2021 at 9:15 Comment(2)
In order to test if the installation was successful run the following command on terminal 'javac -version'Velarize
Thanks @Vladimir Kuzomenskyi, I have installed successfully with help of your simple steps.Stitching
I
5

Eclipse Temurin is the official successor to adoptopenjdk. So, as of May 2022, I would use the following

brew install --cask temurin8

When the installation is done, JDK 8 is installed in /Library/Java/JavaVirtualMachines/temurin-8.jdk

Ingeringersoll answered 9/5, 2022 at 12:1 Comment(0)
A
4

Easiest way

1) brew cask install java

2) java -version

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

P.S - Cask is an extension to Homebrew that is intended to manage large Mac binaries and graphical applications, but using the Homebrew interface. Also see this answer on Apple StackExchange.

Asuncion answered 18/6, 2017 at 18:24 Comment(1)
it always installs the latest versionTrireme
S
4

Simplest is to download the dmg file from following site and install by double click

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

look for available JVMs from home directory

ls -al /Library/Java/JavaVirtualMachines

and update the .bash_profile with relevent version

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk./Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

and finally

source ~/.bash_profile
Scrapbook answered 4/6, 2018 at 14:42 Comment(0)
J
4

As of 2023, brew install --cask zulu8 didn't work for me on Apple chip. brew install openjdk@8 also didn't not. The only one solution worked for me was brew install --cask adoptopenjdk8 and then of course vim ~/.zshrc with export JAVAC_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/ inside that file.

Jerejereld answered 6/1, 2023 at 15:47 Comment(0)
S
2

Try :

brew cask install java 8

it will give the below result

8tracksradiohelper       adoptopenjdk8            amitv87-pip              
corretto8                icons8                   vmware-fusion8           
x48                      zulu8

Next enter:

brew cask install adoptopenjdk8

---- java 8 will be installed in Mac.

Shirelyshirey answered 4/6, 2019 at 14:28 Comment(2)
brew cask install java 8 gave me a completely different list: eclipse-java, netbeans-java-ee, oracle-jdk-javadoc, eclipse-javascript, netbeans-java-seIdeal
This no longer works. I have Homebrew 2.7.1 running on Mac OS Catalina 10.15.4 Using brew tap followed by brew install --cask from another comment apparently worked fine.Semifinalist
W
2

Update HomeBrew from here - How to install Java 8 on Mac

And then install Zulu M1 JDK from here. https://cdn.azul.com/zulu/bin/zulu8.66.0.15-ca-jdk8.0.352-macosx_aarch64.dmg

Post download Set JDK Home in your path like below:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home'
export PATH=$JAVA_HOME/bin:$PATH
Williemaewillies answered 28/11, 2022 at 6:34 Comment(0)
P
0

The simplest answer is the Zulu java prebuilts. They even come with an installer that does all the work for you.

https://www.azul.com/downloads/?version=java-8-lts&os=macos&package=jdk

Prothesis answered 18/4, 2022 at 12:40 Comment(0)
I
-4

Below steps worked for me.

1) Uninstall all jdks

In the Terminal window Copy and Paste the command below:

sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin

sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefpane

2) Install APPLE jdk.

https://support.apple.com/kb/DL1572?locale=en_US

3) Download latest JDK from Oracle and install it , for me it was JDK 1.82

http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

Thats all it will work like a charm.

Irmine answered 30/5, 2016 at 12:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.