Проблемы установки Maven: JAVA_HOME должен указывать на JDK, а не JRE? - PullRequest
1 голос
/ 13 января 2020

Я очень новичок в CS и очень незнаком с UNIX / Bash vocab.

В настоящее время я пытаюсь установить Maven, и я сделал несколько ошибок, скопировав старые инструкции по установке (с неверные номера версий) и теперь весь процесс настолько испорчен. Сначала я попытался следовать приведенным инструкциям на веб-сайте, но это не сработало, затем я попробовал несколько других, и теперь я переживаю, что у меня беспорядок, следуя другим наборам инструкций.

Сейчас я достиг точки, когда при наборе mvn -version я получаю следующее:

Переменная среды JAVA_HOME не определена правильно. Эта переменная среды необходима для запуска NB: JAVA_HOME должна указывать на JDK, а не на JRE

Первоначально для моего JAVA_HOME было задано значение jdk-install-dir, которое все равно сообщало мне об ошибке выше. Я попытался повторно загрузить jdk (версия 13.0.1) из Oracle, перетащил этот файл в мой домашний каталог и разархивировал его. Затем я установил JAVA_HOME в этот разархивированный файл jdk-13.0.1.jdk и обновил переменную PATH. После всего этого, я все еще получаю это сообщение об ошибке, и я не уверен, что делать.

Для справки, вот для чего установлены некоторые соответствующие переменные окружения (я не включил нерелевантную информацию из PATH):

~ echo $JAVA_HOME
jdk-13.0.1.jdk
~ echo $PATH
/usr/local/apache-maven/apache-maven-3.6.3/bin:/opt/apache-maven-3.6.3/bin:jdk-install-dir/bin:/usr/local/apache-maven/apache-maven-3.3.9/bin:/opt/apache-maven-3.6.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/allyson/apache-maven-3.6.3/bin:/Users/allyson/apache-maven-3.6.3/bin:jdk-12.0.1.jdk/bin:/Users/allyson/apache-maven-3.6.3/bin:JDK-13.0.1.jdk/bin 
~ echo $M2
/usr/local/apache-maven/apache-maven-3.6.3/bin
~ echo $M2_HOME
/Users/allyson/apache-maven-3.6.3

Одна вещь, которая мне интересна: для переменные M2 и M2_HOME, предполагается, что одна находится в моем домашнем каталоге (/Users/allyson), а другая для /usr/local?

Ответы [ 2 ]

3 голосов
/ 13 января 2020

Хорошо, сделайте глубокий вдох, и мы пройдем через это. У каждой из этих переменных среды есть цель, и как только вы поймете, что это за цели, это станет намного понятнее. Смешивание учебников не обязательно является проблемой, но вы захотите понять, что вы делаете, а не просто слепо копировать значения из inte rnet.

  1. JAVA_HOME предназначено для идентификации в системную среду, где можно найти среду выполнения java. Необходимо указать полный путь того места, где был установлен ваш JDK. На windows это может быть C:\Program Files\Java\jdk-13.0.1. В системе Linux у вас есть немного больше гибкости. Общие местоположения могут быть /opt/java/jdk-13.0.1 или /usr/local/java/jdk-13.0.1. Если вы установили свой JDK где-то еще, вам нужно вместо этого использовать этот путь. Сообщение NB: JAVA_HOME should point to a JDK not a JRE относится к распространенной ошибке, когда для установки maven - maven требуется JDK, а не простая JRE. Эта ошибка настолько распространена, что всякий раз, когда JAVA_HOME указывает на папку, не являющуюся JDK, он выводит это предупреждение (даже если рассматриваемая папка на самом деле не является JRE ).
  2. M2_HOME должен быть установлен на полный путь , где установлен maven (то есть место, где вы его распаковали). Это более или менее помогает maven «найти себя», если это необходимо по какой-либо причине. Строго говоря, в этом нет необходимости. (Это не установлено в моей системе, и Maven прекрасно работает для меня). Обычно это удобно для установки переменной окружения next .
  3. M2 - это полный путь к папке, где находится исполняемый файл maven. Это почти всегда будет $M2_HOME/bin, но, безусловно, возможно делать странные вещи, и это позволит вам обойти эти ситуации. Очевидно, это не сработает, если вы не укажете $M2_HOME. Этот также не является строго необходимым, и в основном это удобный способ настройки следующего.
  4. PATH - это то, где ваша система Linux ищет программы, которые запускаются при вводе их имени в командной строке. Для простоты использования вы должны убедиться, что исполняемые файлы maven и java включены в список с разделителями :. Большинство дистрибутивов Linux уже имеют стандартную настройку PATH для вас в каком-либо файле ресурсов оболочки. Вы захотите обратиться к их документации, чтобы узнать, как добавить еще одну запись в путь, но обычно используется идиома PATH=$PATH:$M2 (которая добавит значение $M2 к значению $PATH, а затем сохранит результат обратно в PATH. Если вы не настроили $M2 или $M2_HOME, вам нужно будет сделать что-то еще.

Итак, TL; DR, если вы установили свой JDK в /opt/java/jdk-13.0.1 и в распакованном виде maven в /opt/maven/apache-maven-3.6.3, ваши несут минимум рабочих значений:

export JAVA_HOME=/opt/java/jdk-13.0.1
export PATH=$PATH:$JAVA_HOME/bin:/opt/maven/apache-maven-3.6.3/bin

А если вы хотели полный комплект

export JAVA_HOME=/opt/java/jdk-13.0.1
export M2_HOME=/opt/maven/apache-maven-3.6.3
export M2=$M2_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin:$M2

Стоит отметить, что большинство Java IDE включают GUI для настройки maven и Java в IDE (настройки обычно работают только в этой IDE ). Это часто намного проще для начинающих встать и бежать таким образом.

0 голосов
/ 13 января 2020

$ JAVA_HOME должен быть полным путем, а не именем dir.

scream@kafka1:~$ echo $JAVA_HOME
/opt/java/jdk-11.0.5/
scream@kafka1:~$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...