J'ai eu le même problème sur une machine Linux. J'étais assez frustré au début, car j'ai installé à la fois le JDK et le JRE. J'utilise simultanément les versions 1.6, 1.7 et 1.8, et j'ai beaucoup joué avec les alternatives pour que tout soit réglé correctement.
Le problème était assez stupide à résoudre, mais contre-intuitif. Pendant que j'utilisais le bon JDK, j'ai prêté attention au chemin des outils dont jar maven se plaignait - il s'attendait à ce qu'il soit
$JAVA_HOME\..\lib\tools.jar
La $JAVA_HOMEvariable pointait directement vers mon jdkdossier ( /usr/local/javaqui était également l' $PATHentrée correcte et le lien sym alternatif). Il recherche en fait le libdossier en dehors du répertoire java, car:
$JAVA_HOME\..\lib\tools.jar
se résoudra à
/usr/local/lib/tools.jar
et ce n'est pas un emplacement valide.
Pour résoudre ce problème, la $JAVA_HOMEvariable doit plutôt pointer vers cet emplacement /usr/local/java/jre(en supposant que le chemin JDK est /usr/local/java) - il y a en fait un jredossier dans le répertoire d'installation JDK, fourni avec chaque JDK. Cette nouvelle configuration obligera maven à consulter le répertoire JRE, qui fait partie du JDK:
$JAVA_HOME\..\lib\tools
qui se résout maintenant à
/usr/local/java/jre/../lib/tools.jar
et enfin à
/usr/local/java/lib/tools.jar
qui est là où le tools.jarréside vraiment.
Ainsi, même parmi vous utilisez effectivement le JDK au lieu du JRE, le $ JAVA_HOME doit pointer vers le JRE. N'oubliez pas que l'alternative au système d'exploitation doit toujours faire référence au JDK.