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
.
Then you click on Installed Software
and search the list for the latest Java update (here “Update 1”).
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:
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).
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”.
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.
To fix this problem, do the following:
- Duplicate the existing entry (by hitting the
Duplicate...
button) - Delete the original entry; it’s the one with checked checkbox in front of it.
- Then click
Search...
. This should add two new entries to the list (see next screenshot). - Delete the entry you’ve created in step 1 (i.e. the duplicate of the original entry).
- 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. - Close the Settings dialog with OK.
-
Restart Eclipse. This will remove the wrong entry (the one for
/System/Library/Java/...
) from the list.
The list of installed JREs then should look like this:
Manually adding a JDK ∞
If you want (for any reason) to add the JDK manually, here’s how to do this:
- Go to
Installed JREs
in the Eclipse Settings. - Click
Add...
- Choose “MacOS X VM” and hit
Next...
- Specify
/Library/Java/JavaVirtualMachines/<javaversion>.jdk/Contents/Home/
underJRE Home
. Note: You need to type/paste the directory directly into the field. You can’t use theDirectory...
as the directories in theJavaVirtualMachines
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. -
Give the JDK a meaningful name and hit
Finish
.
Changelog ∞
What changed?
-
2011-12-30: Published
Thanks for the great article . helped me .
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.