Maven: компиляция фатальной ошибки: недопустимая целевая версия: 1.8
Мы просто обновили проект от jdk 1.6
до jdk 1.8
. При создании проекта на моей машине я получаю следующую ошибку.
[ERROR] Не удалось выполнить цель org.apache.maven.plugins: Maven-компилятор-плагин: 3.3: компилировать (по умолчанию-компиляция) при исключении проекта: компиляция фатальной ошибки: недействительный target release: 1.8 → [Помощь 1]
Вот плагин компилятора maven, который был использован
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
Я просмотрел много сообщений, и большинство из них связано с неправильной версией, настроенной для java_home. Я проверил все эти аспекты и не мог найти никого из них тревожным.
Версия Java -
qadeersmsiphone:main pdubey$ java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
Версия Maven -
qadeersmsiphone:main pdubey$ mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac"
и я проверил, что при создании проекта maven использует jdk 1.8
qadeersmsiphone:main pdubey$ mvn install -debug
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml
[DEBUG] Reading user settings from /Users/pdubey/.m2/settings.xml
[DEBUG] Using local repository at /Users/pdubey/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/pdubey/.m2/repository
[INFO] Scanning for projects...
ОБНОВЛЕНИЕ:. Я мог бы заставить его работать, удалив maven-compiler-plugin в файле pom (в идеале я не хочу этого делать). И я также заметил, что даже если я удалить этот плагин, maven по умолчанию загружает версию 3.3 компилятор в моем локальном репо. Я не уверен, что неправильно в этом плагин, хотя источник и цель выглядят правильно.
Ответы
Ответ 1
Проверьте версию java и Javac. Моя версия Java была 1.8.0_51
$ java -version
java version "1.8.0_51"
Но версия javac указывала на старый jdk 1.7.0_67
$ javac -version
javac 1.7.0_67
Есть несколько вещей, которые мы должны попробовать -
-
Убедитесь, что символическая ссылка указывает на правильный jdk. Если нет, удалите существующую ссылку и создайте новую для своего jdk
cd /System/Library/Frameworks/JavaVM.framework/Versions/
rm CurrentJDK
ln -s /Library/Java/JavaVirtualMachines/<jdk version>.jdk/Contents/ CurrentJDK
-
В/Library/Java/Extension у меня был tools.jar. Я полагаю, это было из старого jdk.
cd /Library/Java/Extensions
-rw-r--r-- 1 root admin 15286304 Jan 14 2015 tools.jar
Удалите этот
sudo rm -rf /Library/Java/Extensions
точка 2 сделала трюк для меня:)
Ответ 2
Иногда эта проблема связана с JAVA_HOME
, используемой maven.
- В моем конкретном случае я попытался запустить цель
install
и имел точное сообщение subj.
- Затем я просто попробовал команду
mvn -version
, и я понял, что использует jdk7
- Затем я запускаю консоль
set JAVA_HOME=C:\Java\jdk8
(мой путь к jdk, поэтому ваш собственный может быть другим)
- Затем набрал
mvn clean install test
, и он наконец-то работал fine
Удачи!
Ответ 3
Та же проблема здесь, но я использовал конфигурации запуска внутри Eclipse, когда maven продолжал выдавать эту ошибку. Исправлено путем установки правильной версии JDK здесь:
![Run Configuration image]()
Ответ 4
У меня была такая же проблема:
> java -version
java version "1.8.0_111"
>javac -version
javac 1.7.0.6
Я проверил Path в системных переменных, и jdk не был обновлен до jdk 8.
После того, как я обновил путь с правильным jdk, он сработал.
Ответ 5
В некоторых случаях мы можем использовать альтернативы для переключения версии.
alternatives --config javac
alternatives --config java
Но MAVEN использует JAVA_HOME.
И этот JAVA_HOME может быть возможен по ссылке.
Либо нам нужно вручную указать JAVA_HOME на новую папку jdk, либо ИЛИ вручную удалить/удалить ссылку и снова создать новую такую же ссылку из приведенных выше ответов.
Из альтернатив мы можем получить путь JDK