Не удается заставить Maven распознавать Java 1.8



Я не могу показаться, чтобы иметь возможность получить Maven для использования Java 1.8. Использование 1.8 в качестве цели приводит к следующей ошибке:



[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
(default-compile) on project csaro: Fatal error compiling: invalid target
release: 1.8 -> [Help 1]


причина ошибки достаточно очевидна: Maven не использует правильную версию Java:



$ mvn -version
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T07:51:42-06:00)
Maven home: /usr/local/Cellar/maven/3.2.2/libexec
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.2", arch: "x86_64", family: "mac"


но установленная версия Java должна быть 1,8:



$ java -version
java version "1.8.0_20-ea"
Java(TM) SE Runtime Environment (build 1.8.0_20-ea-b22)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b21, mixed mode)


и JAVA_HOME установлен:



$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home


Я тоже пробовал здесь (который создает mavenrc). Я попытался перезагрузить компьютер несколько раз и проверили, что env var правильно установлен (он установлен в .bash_profile).



Maven был установлен с доморощенным.



Java 1.8 отлично работает в Eclipse (который использует m2e). Я просто не могу заставить Maven работать в командной строке.

513   8  

8 ответов:

для меня проблема была в том, что когда я установил из jdk-8u25-macosx-x64.dmg установка не обновила /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ссылка на каталог нового 1.8 JDK. Это, возможно, не было проблемой исходного вопроса, но это было решение для меня, когда я столкнулся с тем же сообщением об ошибке.

Я не знаю, почему установщик не связывает его и, чтобы сделать вещи более запутанными, путь отличается в зависимости от того, установили ли вы его из Oracle или Apple. Смотрите Mac OS X 10.6.7 Java Path Текущий JDK заблуждение

Я сделал следующее, чтобы исправить мое окружение

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/<installed_jdk_version>.jdk/Contents CurrentJDK

оказывается, что я забыл ~/.mavenrc файл, который установил значение JAVA_HOME.

для будущих читателей, проверьте следующие места для мест, которые могут переопределить JAVA_HOME (в порядке возрастания приоритета):

  • ~/.bash_profile
  • ~/.bash_login
  • ~/.bashrc
  • ~/.profile
  • /etc/mavenrc
  • ~/.mavenrc

решение, которое сработало для меня:

в Eclipse у меня была неправильная конфигурация запуска в моей сборке Maven. Перейти к

запустить конфигурации -> JRE [Tab]

и установите время выполнения на Java 8.

я столкнулся с той же проблемой на моей системе CentOS 6.5.

java -version вернул версию Java 8, но javac -version возвратил версию Java 7.

мне пришлось выполнить следующие команды, чтобы получить все виды связанных с Java символических ссылок, указывающих на мою установку JDK 8:

sudo alternatives --config java
sudo alternatives --config javac
sudo alternatives --config jre_openjdk
sudo alternatives --config java_sdk_openjdk

код JAVA_HOME переопределяется где-то еще. Попробуйте эхо в mvn прямо перед вызовом java.

У меня была такая же проблема, нужно было сделать 2 шага, чтобы исправить:

  1. обеспечить JAVA_HOME правильно указывает на JDK;
  2. JDK и JRE в eclipse должны указывать на одну и ту же версию.

для меня 1 шаг вправо, 2 шага были проблемы. В eclipse "свойства проекта" Путь сборки "установленный JRE" указывает на JDK.

вы используете выпуск раннего доступа 1.8. Теперь, когда это было выпущено, вы должны установить выпущенную версию.

Проверьте установку maven, чтобы узнать, есть ли у вас связанная с ней конфигурация, которая указывает конкретный JDK. Иногда существуют сценарии-оболочки, которые сбрасывают JAVA_HOME до запуска maven, или исполняемый файл maven запускается в оболочке, которая ссылается на файл конфигурации, который может привязать вас к определенной JVM.

Если вы используете Maven в сервере непрерывной интеграции, обязательно проверьте его настройки, поскольку он может переопределить JDK, используемый Maven. Для Дженкинса мне пришлось добавить новый 1.8 JDK в общие настройки и настроить свой проект для его использования.

Comments

    Ничего не найдено.