El escenario es el siguiente:

Tenemos varias versiones de Java en OS X y queremos cambiar de versión fácilmente porque dependiendo del proyecto en el que estamos necesitamos compilar con una o con otra.

Normalmente, OS X viene con la versión 1.6 de Java que es la que distribuye Apple, versión totalmente desaconsejable si desarrollas con Java. Así que lo habitual es instalar Java 7 o Java 8 que ha salido no hace mucho. Para obtener instrucciones de cómo instalar Java en OS X haz clic aquí

Pues bien, una vez tenemos instaladas varias versiones de Java en OS X, tendremos algo parecido a esto (dependiendo de las actualizaciones instaladas):

  • Java 1.6 -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
  • Java 1.7 -> /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home
  • Java 1.8 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

varias versiones de java en OS X

Gestionando varias versiones de Java en OS X con un enlace simbólico

Para gestionar correctamente varias versiones de Java en OS X lo normal es hacerse un enlace simbólico de la versión de Java que queremos utilizar. Supongamos que queremos utilizar la versión 1.7 de Java, haremos un enlace simbólico tal que así:


ln -s [RUTA_A_LA_VERSION_DE_JAVA] [RUTA_AL_ENLACE_SIMBÓLICO]

En este caso para configurar Java 1.7:


ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home /Library/Java/Home

De esta manera /Library/Java/Home estará apuntando a la versión 1.7 de Java.

Configurando JAVA_HOME

Lo siguiente que hay que hacer es exportar /Library/Java/Home como la variable JAVA_HOME del sistema, por ejemplo editando nuestro archivo ~/.profile y añadiendo esta línea:

export JAVA_HOME=/Library/Java/Home

¿Cómo cambiar de versión de Java?

Y ya lo tenemos. A partir de este momento, si queremos cambiar de versión de Java sólo tenemos que cambiar el enlace simbólico, por ejemplo, para dejar de utilizar Java 1.7 y utilizar Java 1.8 escribiríamos algo así:


ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home /Library/Java/Home

Y no haría falta tocar nada más. En fin, cosas de Java que no son evidentes del todo y que nunca viene de más tener una chuletilla por ahí.

Por cierto, truco cortesía de @ReservaDel84