Tuve el mismo problema en una máquina Linux. Al principio estaba bastante frustrado porque instalé JDK y JRE. Estoy usando la versión 1.6, 1.7 y 1.8 simultáneamente, y he jugado mucho con las alternativas para tener todo configurado correctamente.
El problema fue bastante estúpido de resolver, pero contradictorio. Mientras usaba el JDK correcto, presté atención a la ruta de las herramientas de las que se quejaba Jar Maven, esperaba que fuera
$JAVA_HOME\..\lib\tools.jar
La $JAVA_HOMEvariable apuntaba directamente a mi jdkcarpeta ( /usr/local/javaque también era la $PATHentrada correcta y el enlace simbólico alternativo). Realmente busca la libcarpeta fuera del directorio de Java, porque:
$JAVA_HOME\..\lib\tools.jar
resolverá a
/usr/local/lib/tools.jar
y esa no es una ubicación válida.
Para resolver esto, la $JAVA_HOMEvariable debería apuntar a esta ubicación /usr/local/java/jre(suponiendo que la ruta JDK es /usr/local/java): en realidad hay una jrecarpeta dentro del directorio de instalación de JDK, que viene con cada JDK. Esta nueva configuración hará que Maven vea el directorio JRE, que es parte del JDK:
$JAVA_HOME\..\lib\tools
que ahora resuelve a
/usr/local/java/jre/../lib/tools.jar
y finalmente a
/usr/local/java/lib/tools.jar
que es donde tools.jarreside realmente.
Entonces, incluso si está utilizando el JDK en lugar del JRE, $ JAVA_HOME tiene que apuntar al JRE. Recuerde, la alternativa del sistema operativo aún debe referirse al JDK.