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_HOME
Variable zeigte direkt auf meinen jdk
Ordner ( /usr/local/java
der auch der richtige $PATH
Eintrag und alternative Sym-Link war). Es sucht tatsächlich nach dem lib
Ordner 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_HOME
Variable stattdessen auf diesen Speicherort verweisen /usr/local/java/jre
(vorausgesetzt, der JDK-Pfad lautet /usr/local/java
). jre
Im 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.jar
wohnt 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.