Ich hatte das gleiche Problem auf einem Linux-Computer. Anfangs war ich ziemlich frustriert, weil ich sowohl das JDK als auch das JRE installiert habe. Ich verwende gleichzeitig die Versionen 1.6, 1.7 und 1.8 und habe viel mit den Alternativen gespielt, um alles richtig einzustellen.
Das Problem war ziemlich dumm zu lösen, aber nicht intuitiv. Während ich das richtige JDK verwendete, achtete ich auf den Pfad der Werkzeuge, über die sich jar maven beschwert hatte - es wurde erwartet
$JAVA_HOME\..\lib\tools.jar
Die $JAVA_HOMEVariable zeigte direkt auf meinen jdkOrdner ( /usr/local/javader auch der richtige $PATHEintrag und alternative Sym-Link war). Es sucht tatsächlich nach dem libOrdner außerhalb des Java-Verzeichnisses, weil:
$JAVA_HOME\..\lib\tools.jar
wird zu lösen
/usr/local/lib/tools.jar
und das ist kein gültiger Ort.
Um dies zu lösen, sollte die $JAVA_HOMEVariable stattdessen auf diesen Speicherort verweisen /usr/local/java/jre(vorausgesetzt, der JDK-Pfad lautet /usr/local/java). jreIm JDK-Installationsverzeichnis befindet sich tatsächlich ein Ordner, der mit jedem JDK geliefert wird. Dieses neue Setup veranlasst maven, das JRE-Verzeichnis zu überprüfen, das Teil des JDK ist:
$JAVA_HOME\..\lib\tools
was jetzt zu löst
/usr/local/java/jre/../lib/tools.jar
und schließlich zu
/usr/local/java/lib/tools.jar
Hier tools.jarwohnt der wirklich.
Selbst wenn Sie tatsächlich das JDK anstelle der JRE verwenden, muss $ JAVA_HOME auf die JRE verweisen. Denken Sie daran, dass sich die Betriebssystemalternative weiterhin auf das JDK beziehen sollte.