Miałem ten sam problem na maszynie z linuksem. Na początku byłem bardzo sfrustrowany, ponieważ zainstalowałem zarówno JDK, jak i JRE. Używam jednocześnie wersji 1.6, 1.7 i 1.8 i dużo grałem z alternatywami, aby wszystko było ustawione poprawnie.
Problem był głupi do rozwiązania, ale sprzeczny z intuicją. Podczas korzystania z prawidłowego pakietu JDK zwracałem uwagę na ścieżkę narzędzi, na które narzekał maven jar - spodziewałem się, że będzie
$JAVA_HOME\..\lib\tools.jar
$JAVA_HOME
Zmienna wskazał bezpośrednio do mojego jdk
folderu ( /usr/local/java
który również był poprawny $PATH
wpis i alternatywne łącza sym). W rzeczywistości szuka lib
folderu poza katalogiem Java, ponieważ:
$JAVA_HOME\..\lib\tools.jar
rozwiąże do
/usr/local/lib/tools.jar
i to nie jest poprawna lokalizacja.
Aby rozwiązać ten problem, $JAVA_HOME
zmienna powinna zamiast tego wskazywać tę lokalizację /usr/local/java/jre
(zakładając, że jest to ścieżka JDK /usr/local/java
) - w jre
katalogu instalacyjnym JDK znajduje się folder, który jest dostarczany z każdym JDK. Ta nowa konfiguracja spowoduje, że maven zajrzy do katalogu JRE, który jest częścią JDK:
$JAVA_HOME\..\lib\tools
który teraz rozwiązuje
/usr/local/java/jre/../lib/tools.jar
i wreszcie do
/usr/local/java/lib/tools.jar
gdzie tools.jar
naprawdę mieszka.
Zatem nawet jeśli używasz JDK zamiast JRE, $ JAVA_HOME musi wskazywać na JRE. Pamiętaj, że alternatywa dla systemu operacyjnego powinna nadal odnosić się do JDK.