Maven не обнаруживает JAVA_HOME правильно в Ubuntu

#java #maven #ubuntu-18.04

#java #maven #ubuntu-18.04

Вопрос:

Я играл с некоторыми переменными среды в Ubuntu 18.04.5, пытаясь заставить их не сбрасываться каждый раз, когда я повторно открываю терминал.

Однако теперь Maven реагирует на каждую команду с этой ошибкой:

 The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
  

Я почти уверен, что мой $JAVA_HOME указывает на правильный каталог, потому что команда echo $JAVA_HOME возвращает:

 /usr/lib/jvm/java-11-openjdk-amd64
  

И команда $JAVA_HOME/bin/java --version возвращает:

 openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8 10-post-Ubuntu-0ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.8 10-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing)
  

Перед этой ошибкой я добавил эти строки в /etc/environment :

 export JAVA14="/usr/lib/jvm/jdk-14"
export JAVA11="/usr/lib/jvm/java-11-openjdk-amd64"
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
  

И следующие строки в ~/.bashrc :

 source /etc/environment
  

Кроме того, после некоторого редактирования я вернул все, как это было раньше, и команда sudo update-alternatives --config java возвращает следующее:

   Selection    Path                                         Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64            1         manual mode
  2            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
  

Итак, выбран правильный путь, а также я не изменил никаких других update-alternatives конфигураций.

Что я могу сделать, чтобы Maven снова увидел $ JAVA_HOME?

Редактировать:

Я исправил эту проблему, непосредственно отредактировав /usr/share/maven/bin/mvn скрипт и жестко запрограммировав путь к java исполняемому файлу в JAVACMD переменной. Тем не менее, я все еще заинтересован в нормальном решении этой проблемы.

Комментарии:

1. можете ли вы предоставить нам вывод команды mvn -version , которая отобразит Java_home, который maven получает во время своего процесса?

2. Он отображает ту же ошибку: The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE

3. что вы получите, если запустите «java -version»?

4. Вы добавили к этому JAVA_HOME путь?

5. Запуск java --version дает тот же результат, что и $JAVA_HOME/bin/java --version .

Ответ №1:

У меня пока нет прав на комментарий (или я бы сделал это, надеюсь, полезным предположением в комментарии), но вы должны проверить $HOME /.mvnrc (или эквивалент), чтобы увидеть, установлен ли там JAVA_HOME.