My previous post about installing Java on OS X received quite a bit of traffic, and I felt that some of the information was outdated, and it became a little unclear after all the edits, so I’ve endeavoured to create a much easier to understand set of instructions.
The instructions for installing the JDK (Java Development Kit) are a subset of the instructions for installing just the JRE, because Oracle provides an installer for the JDK.
- Go to the Oracle Java downloads page and download the JDK installer. You should end up with a file named something similar to
jdk-8u60-macosx-x64.dmg, but perhaps a newer version.
- Open the
.dmgDisk Image and run the installer.
- Edit the JDK’s newly installed
Info.plistfile to enable the included JRE to be used from the the command line, and from bundled applications:
cd `ls -1d /Library/Java/JavaVirtualMachines/jdk1.8.*.jdk | sort -rn -t _ -k 1.42 -k 2 | head -1` sudo defaults write "`pwd`/Contents/Info.plist" JavaVM -dict-add 'JVMCapabilities' '<array><string>JNI</string><string>BundledApp</string><string>CommandLine</string></array>' sudo chmod 0664 Contents/Info.plist sudo plutil -convert xml1 Contents/Info.plist
The third line fixes a permissions issue create by using
defaults write. The fourth line is not required, but makes the file more user-friendly if you open it again in a text editor.
- Create a link to add backwards compatibility for some applications made for older Java versions:
sudo mkdir -p Contents/Home/bundle/Libraries cd Contents/Home/bundle/Libraries sudo ln -s ../../jre/lib/server/libjvm.dylib libserver.dylib
- Optional: If you’re actually using the JDK for software development, you may want to set the
JAVA_HOMEenvironment variable. The recommended way is to use
/usr/libexec/java_homeprogram, so I recommend setting
.bash_profilelike Jared suggests:
echo "export JAVA_HOME=\`/usr/libexec/java_home\`" >> ~/.bash_profile chmod u+x ~/.bash_profile
This will get the latest installed Java’s home directory by default, but check out
man java_homefor ways to easily get other Java home directories.
You should be done now, so try and open the application. If it does not work, some applications require legacy Java 6 to be installed. You can have it installed without actually using it, however, it’s possible to trick the applications into thinking legacy Java 6 is installed, without actually doing so.
If you’re running El Capitan, this is actually a little difficult now, because Apple added SIP (System Integrity Protection) to OS X. I have written a post explaining how to disable and enable SIP.
If you’ve disabled SIP, or are not running El Capitan yet, you can trick some applications into thinking legacy Java 6 is installed by creating two folders with the following commands in
sudo mkdir -p /System/Library/Java/JavaVirtualMachines/1.6.0.jdk sudo mkdir -p /System/Library/Java/Support/Deploy.bundle
Don’t forget to enable SIP again after creating these directories.