У меня была такая же проблема на машине с 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
) - на самом деле в каталоге установки JDK есть папка jre
, которая поставляется с каждым 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.