Feb 16 2006

Using Java 1.5.0 on OS X instead of the stock 1.4.2

Tags: , , Filed under: Written in Englishhugo @ 18:40

I have Java 5 installed on my Mac, but I couldn’t figure out how to use it.

Trying to figure out what /usr/bin/java is, I got:

hugo@Oompa-Loompa ~% ls -l /usr/bin/java
lrwxr-xr-x   1 root  wheel  57B Nov 23 13:03 /usr/bin/java@ -> /System/Library/Frameworks/JavaVM.framework/Commands/java

hugo@Oompa-Loompa /System/Library/Frameworks/JavaVM.framework/Commands% ./java -version
java version "1.4.2_09"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-232)
Java HotSpot(TM) Client VM (build 1.4.2-54, mixed mode)

hugo@Oompa-Loompa ~% ls -l /System/Library/Frameworks/JavaVM.framework
total 56
lrwxr-xr-x    1 root  wheel  27B Nov 23 13:03 Classes@ -> Versions/CurrentJDK/Classes
lrwxr-xr-x    1 root  wheel  28B Nov 23 13:03 Commands@ -> Versions/CurrentJDK/Commands
lrwxr-xr-x    1 root  wheel  24B Nov 24 00:08 Headers@ -> Versions/Current/Headers
lrwxr-xr-x    1 root  wheel  24B Nov 23 13:03 Home@ -> Versions/CurrentJDK/Home
lrwxr-xr-x    1 root  wheel  23B Nov 23 15:49 JavaVM@ -> Versions/Current/JavaVM
lrwxr-xr-x    1 root  wheel  29B Nov 23 13:03 Libraries@ -> Versions/CurrentJDK/Libraries
lrwxr-xr-x    1 root  wheel  26B Nov 23 15:49 Resources@ -> Versions/Current/Resources
drwxr-xr-x   13 root  wheel  442B Feb 16 18:24 Versions/

hugo@Oompa-Loompa ~% ls -l /System/Library/Frameworks/JavaVM.framework/Versions
lrwxr-xr-x   1 root  wheel   5B Nov 23 15:49 1.3@ -> 1.3.1
drwxr-xr-x   8 root  wheel  272B Jun  9  2005 1.3.1/
lrwxr-xr-x   1 root  wheel   5B Nov 23 13:03 1.4@ -> 1.4.2
drwxr-xr-x   8 root  wheel  272B Jun  9  2005 1.4.2/
lrwxr-xr-x   1 root  wheel   5B Nov 23 15:49 1.5@ -> 1.5.0
drwxr-xr-x   8 root  wheel  272B Nov 23 15:49 1.5.0/
drwxr-xr-x   6 root  wheel  204B Feb 15 08:05 A/
lrwxr-xr-x   1 root  wheel   1B Nov 23 15:49 Current@ -> A
lrwxr-xr-x   1 root  wheel   5B Nov 23 13:03 CurrentJDK@ -> 1.4.2

A here is therefore version 1.4.2_09, and I wanted to use 1.5.
So I ended up doing something ugly:

hugo@Oompa-Loompa /System/Library/Frameworks/JavaVM.framework/Versions% sudo mv Current Current.DIST
hugo@Oompa-Loompa /System/Library/Frameworks/JavaVM.framework/Versions% sudo mv CurrentJDK CurrentJDK.DIST
hugo@Oompa-Loompa /System/Library/Frameworks/JavaVM.framework/Versions% sudo ln -s 1.5 Current
hugo@Oompa-Loompa /System/Library/Frameworks/JavaVM.framework/Versions% sudo ln -s 1.5 CurrentJDK

And behold:

hugo@Oompa-Loompa ~% java -version
java version "1.5.0_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_05-83)
Java HotSpot(TM) Client VM (build 1.5.0_05-48, mixed mode, sharing)

I can already hear Mac people scream.

This is what happens when you let a Unix geek play with a Mac. I bet there was a better way to do that, but who knows how. I’ll have to watch out for things breaking in the Java world now.