manski's blog

Eclipse and the JDK under Mac OS X Lion

Java is open-source, fortunately. Accessing its source code is, unfortunately, not so intuitive on Mac OS X Lion when using Eclipse. This article will guide you through the steps required to be able to view Java’s source code in Eclipse.

Determine your Java version

Apple uses a different versioning system for Java than Oracle. For example, on my system the actual Java version is “1.6.0_29” (determined by calling java -version from a terminal), but this version comes as “Java for Mac OS X 10.7 Update 1” through Apple’s Software Update.

To find out which Java Update you’re running, go to the System Preferences and click Software Update.

Software Update in the Mac OS X System Preferences

Then you click on Installed Software and search the list for the latest Java update (here “Update 1”).

List of installed software updates

That’s the “Java version” you need to know.

Downloading the JDK

When working with Java, you need to distinguish two Java software package types:

  • JRE: The “Java Runtime Environment” is necessary to run Java application. You cannot, however, compile Java programs with just the JRE.
  • JDK: The “Java Development Kit” is required when you want to compile Java programs. The JDK includes the JRE, and also comes with Java’s source code.

Remark: Eclipse comes with its own Java compiler. That’s why you don’t need to install a JDK to create Java programs with Eclipse. Eclipse doesn’t ship with the Java source code though. That’s why we still need the JDK.

The JDK for Mac OS X comes as “Java Developer Package”. You can download it here:

http://connect.apple.com/

You’ll need an AppleID to download the JDK. Fortunately, it’s free but you still need to register it. (Tip: You can use the same you use in the iTunes Store.) After logging in, type “java developer package” in the search field (see screenshot).

Downloading the JDK from Apple's website

Make sure the you download the Java Developer Package matching your Java version. In my case, this is “Mac OS X 10.7 Update 1”.

Note: Don’t confuse “10.7” for Java 7. It’s still Java 6. (So don’t download a “10.6” version when you’re running Mac OS X Lion.)

Then install the JDK. This will install the JDK under:

/Library/Java/JavaVirtualMachines/

Note: There’s also the directory /System/Library/Frameworks/JavaVM.framework/. However, this directory seems to be deprecated.

The Java source code will be located here:

/Library/Java/JavaVirtualMachines/<javaversion>.jdk/Contents/Home/src.jar

Check an already installed JDK

To check whether you’ve already installed a JDK, check the list of installed updates (see above) for an entry called “Java Developer Package”.

JRE and JDK in Software Updates

Note: Unfortunately, the Java Developer Package listed in the list doesn’t have any (visible) version information attached to it. I’m not sure whether the JDK will be updated automatically when a new version becomes available.

To check the actual Java version of the installed JDK, go to /Library/Java/JavaVirtualMachines/ and check whether a package called like “1.6.0_29-b11-402.jdk” can be found there. In this example, the Java version would be “1.6.0_29”.

Using the JDK in Eclipse

On Mac OS X, Eclipse provides an automatic way to determine the directory of the installed JDK. Go to the Eclipse Settings and open Java –> Installed JREs.

Then, by clicking on the Search... button, would find the newly installed JDK. Unfortunately, there seems to be a bug in Eclipse Ingido (3.7 – and probably in earlier versions, too) that prevents this button from working correctly. Clicking on it doesn’t do anything when there’s already one (and only one) JRE listed here; see screenshot.

Only one JRE is installed.

To fix this problem, do the following:

  1. Duplicate the existing entry (by hitting the Duplicate... button)
  2. Delete the original entry; it’s the one with checked checkbox in front of it.
  3. Then click Search.... This should add two new entries to the list (see next screenshot).
  4. Delete the entry you’ve created in step 1 (i.e. the duplicate of the original entry).
  5. Check one of the remaining entries. Note: The new two entries are linked. If you check one, both will be checked. Also, you can’t delete the entry for /System/Library/Java/.... Trying to do so will delete the other entry.
  6. Close the Settings dialog with OK.
  7. Restart Eclipse. This will remove the wrong entry (the one for /System/Library/Java/...) from the list.

The "Installed JREs" list after hitting "Search...".

The list of installed JREs then should look like this:

Final list contents for "Installed JREs"

Manually adding a JDK

If you want (for any reason) to add the JDK manually, here’s how to do this:

  1. Go to Installed JREs in the Eclipse Settings.
  2. Click Add...
  3. Choose “MacOS X VM” and hit Next...
  4. Specify /Library/Java/JavaVirtualMachines/<javaversion>.jdk/Contents/Home/ under JRE Home. Note: You need to type/paste the directory directly into the field. You can’t use the Directory... as the directories in the JavaVirtualMachines directory are so called “Mac OS X packages”. These directories are displayed as files and you can’t browse their contents from within the dialog.
  5. Give the JDK a meaningful name and hit Finish.

Filled dialog for manual JDK definition

Changelog

What changed?

  • 2011-12-30: Published

2 comments

  1. Senthil said:

    Thanks for the great article . helped me .

  2. Chris O said:

    Very Helpful…

    Also fun to note… 10.8.2 Mountain Lion does not have the “Installed Software” tab on the Software Update Pane.

    So it was not very easy to find which version of Java I was actually running.
    My solution was to find out the last date of the Apple Software update and then look on apple support page – http://support.apple.com/kb/dl1572

    Thank you again for the article.

Leave a Reply

Your email address will not be published. Required fields are marked *