Installing Java 7 on Mac OS X
While you can download the binaries for Java 7 for Windows and Linux from here, the instructions for setting up Java 7 for Mac OS X are a lot more tedious.
Here are the official instructions for Mac OS X: http://wikis.sun.com/display/OpenJDK/Mac+OS+X+Port
You can follow the instructions line by line and get Java 7 installed on your machine. However, these are the things that might go wrong:
Missing binaries in /bin
The installation expects a bunch of binaries to be present in /bin. However, on my Mac OS X, these binaries were present in /usr/bin/. My workaround was to create symlinks in the /bin directories to make the build happy.
cd /bin/ ln -s /usr/bin/sed ln -s /usr/bin/grep
Repeat the above for each binary that is reported missing in /bin.
Missing jni.h
Make sure that the version of XCode is 3.2.5 or more. I had a 3.2.4 version and that didn’t work.
Building JTReg did not work due to a known bug
It is mentioned in the JTReg build documentation but easy to miss it. The following does not work due to a know bug:
make -C make
Instead try this:
make -C make build
Wrong installation directory in the official instructions
The official instructions ask you to do this:
mkdir -p ~/Library/Java/JavaVirtualMachines cp -R build/macosx-universal/j2sdk-bundle/1.7.0.jdk ~/Library/Java/JavaVirtualMachines
That didn’t work for me. Here’s what worked for me:
mkdir -p /System/Library/Java/JavaVirtualMachines cp -R build/macosx-universal/j2sdk-bundle/1.7.0.jdk /System/Library/Java/JavaVirtualMachines
Finally, setting up env vars
The easiest way to make confirm that Java 7 is successfully installed is:
/usr/libexec/java_home --version 1.7
The output of the above should be:
/System/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
Then type ‘java -version’ against the above installation
/System/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/bin/java -version openjdk version "1.7.0-internal" OpenJDK Runtime Environment (build 1.7.0-internal-root_2011_03_16_17_41-b00) OpenJDK 64-Bit Server VM (build 21.0-b03, mixed mode)
Since I use Java 1.6 on the same machine, I saved the 1.7 path as follows:
export JAVA7_HOME=/System/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
This lets me conveniently switch to Java7, when I need to, and back:
export JAVA_HOME=$JAVA7_HOME
Switch back:
export JAVA_HOME=$JAVA6_HOME
Using Java7
Simplest way to use test Java7 is via command line
export JAVA_HOME=$JAVA7_HOME export PATH=$JAVA_HOME/bin:$PATH
Compile
javac Test.java
Run
java Test
Related posts: