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