У меня была такая же проблема на машине с Linux. Сначала я был довольно разочарован, потому что я установил JDK и JRE. Я использую версии 1.6, 1.7 и 1.8 одновременно, и я много играл с альтернативами, чтобы все было установлено правильно.
Проблема была довольно глупой, но нелогичной. Пока я использовал правильный JDK, я обратил внимание на путь инструментов, на которые жаловался Джар Мейвен - он ожидал, что это будет
$JAVA_HOME\..\lib\tools.jar
$JAVA_HOME
Переменный прямо указал на мою jdk
папку ( /usr/local/java
которая также была правильная $PATH
запись и альтернативная ссылка SYM). На самом деле он ищет lib
папку вне каталога Java, потому что:
$JAVA_HOME\..\lib\tools.jar
будет разрешать
/usr/local/lib/tools.jar
и это не является действительным местоположением.
Чтобы решить эту проблему, $JAVA_HOME
вместо этого переменная должна указывать на это местоположение /usr/local/java/jre
(при условии, что путь JDK /usr/local/java
) - на самом деле в jre
каталоге установки JDK есть папка, которая поставляется с каждым JDK. Эта новая установка заставит maven взглянуть на каталог JRE, который является частью JDK:
$JAVA_HOME\..\lib\tools
который теперь разрешает
/usr/local/java/jre/../lib/tools.jar
и, наконец,
/usr/local/java/lib/tools.jar
где tools.jar
действительно проживает.
Таким образом, даже если вы действительно используете JDK вместо JRE, $ JAVA_HOME должен указывать на JRE. Помните, что альтернатива ОС все еще должна ссылаться на JDK.