Фатальна помилка при компілюванні: недійсний цільовий випуск: 1.8 -> [Довідка 1]


170

Подібна проблема, як одна, розміщена у недійсному цільовому випуску: 1.7, але після перегляду блогу моя проблема досі не вирішена.

Не вдалося виконати ціль org.apache.maven.plugins: maven-compiler-plugin: 3.1: компілювати (компілювати за замовчуванням) для проекту hm_app: Фатальна помилка компіляції: недійсний цільовий випуск: 1,8 -> [Довідка 1]

Коли я стикався з цією проблемою, я дотримувався підручника .

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

виходи

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4

3
... і ви впевнені, що у вас десь встановлена ​​Java 8?
Макото

у мене x86, 64 java 7 і no java 8
rvd

3
Добре. То чому ви намагаєтесь компілювати код Java 8 без компілятора Java 8?
Макото

@Makoto ty для вивчення моєї проблеми встановлення java 8 вирішив її .... ty man :)
rvd

@Makoto Нарешті я зрозумів, що ти говорив "Гаразд. Тож чому ви намагаєтеся скласти код Java 8 без компілятора Java 8?" так що я просто змінив в моїй pom.xml файл java.version> 1,8 </java.version> в java.version> 1,7 </java.version> і я міг би використовувати МВН компіляції на java7 теж
РВД

Відповіді:


281

Ви встановили %JAVA_HOMEjdk 1.7, але ви намагаєтеся компілювати за допомогою 1.8. Встановіть jdk 1.8 і переконайтесь, що ваші %JAVA_HOMEбали до цього або опустіть цільовий реліз до 1,7.

недійсний цільовий випуск: 1.8

Цільовий реліз стосується версії jdk.


7
один більш можливе рішення в моєму випадку це відредагувати файл pom.xml java.version> 1,8 </java.version> в java.version> 1,7 </java.version>
РВД

1
Саме там Maven шукає версію java. Таким чином, ви ефективно змінили версію Java на таку, яку ви встановили на% JAVA_HOME.
Захід

2
На моєму комп'ютері я експортую JAVA_HOME =, /usr/libexec/java_home -v 1.8щоб встановити JAVA_HOME у потрібне місце для 1,8 JDK. Поставте свою улюблену версію замість 1,8. (Є зворотні посилання після = і після 8).
bruce szalwinski

Так, правда, ти мене зрозумів. Я змінив його, щоб скласти ще одну застарілу програму, яка підтримує лише 1.7 вчора: D Дякую!
Davut Гюрбюз

31

Поставте значення в плагін:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

Помилка використання:

<source>${java.version}</source>
<target>${java.version}</target>

2
У моєму випадку рішення полягає в тому, щоб встановити і вихідне, і цільове значення для 1,7
подуманого

в якому файлі це можна знайти?
Юріл Маулідан Раджі

21

У моєму випадку Maven "Конфігурація запуску" використовував неправильну JRE (1.7). Не забудьте встановити прапорець Виконати -> Запустити конфігурації -> (вкладка) JRE, щоб бути jdk1.8.x.


це правда, тому у наступний раз ми перевіряємо, чи з’явиться ця помилка: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan

13

Проблему було вирішено, оскільки у мене JDK вказував на 1,7, а JRE - на 1,8. У командному рядку моє введення запиту

java -version

і

javac -version.

Обидва повинні бути однаковими.  


5

Для затемнення ось як я вирішив свою проблему:

  1. Налаштування -> Компілятор -> Рівень скаржника компілятора (Змінити до 1,8) введіть тут опис зображення

  2. Параметри -> Встановлені JRE -> виберіть JAVA SE 8 1.8 введіть тут опис зображення

  3. Відновіть через maven, використовуючи Run як maven build.

Він більше не повинен показувати вам недійсну цільову помилку.
Примітка: мені не довелося встановлювати або змінювати інші змінні в моєму терміналі. Сподіваюся, це допомагає.


2

Помітивши це у своєму .profile, динамічно піклується про ваше $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

Потім закрийте свою оболонку, відкрийте нову і спробуйте

echo $JAVA_HOME

Він повинен відображати щось на кшталт

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

Якщо ні , видаліть будь-які інші призначення JAVA_HOME із сценаріїв запуску. Пам'ятайте, що ці сценарії запуску починаються з .так, що вони приховані і не будуть включені при використанні *підстановки, наприклад, якщо ви хочете зібрати всі файли вашого домашнього каталогу, вам потрібно:

grep -s JAVA_HOME ~/.* --exclude=.bash_history

1

Проблема, з якою я стикався, полягала в тому, що мені вдалося зробити команду Maven з командного рядка, але не від Eclipse. Що працювало для мене в затемненні, це те, що я змінив конфігурацію запуску, щоб вказати на папку JRE всередині JDK, а не залишити її в Папка JDK лише відповідно до стандарту. Це рішення може працювати і для вас, але спробуйте це, якщо і лише в тому випадку, якщо всі шляхи до Java є правильними, java та javac показують ту саму версію, що і в цілі pom.xml.


Це була моя проблема та рішення.
Скічан

1

Я стикався з розгортанням цього питання в Dokku, чомусь він обирав JDK 1.7

Створення system.propertiesфайлу та налаштування java.runtime.version=1.8вирішили проблему. Зараз Dokku використовує версію Java 8. Вибір JDK на Heroku

Мені ніколи раніше не доводилося це робити ...


Підказка як і раніше працює. Мені довелося багато шукати, щоб змінити версію Java в Dokku на 11. Дякую.
Містер Вандербільт

1

Як згадувала Каміла Македо, ви повинні чітко вказати на версію java для компілятора-плагіна. Для весняного завантаження ви можете зробити це за наступним властивістю:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>

Так, налаштування maven.compiler.releaseвиправлено в моєму проекті Maven.
Cortex

1

Використовуючи IntelliJ, я просто повинен був встановити ще одну (більш високу) версію JDK. Після перезапуску IDE все працювало і навіть усі залежності були вирішені.


1
Перезапуск IntelliJ був для мене ключовим. Я оновив змінну середовища JAVA_HOME, щоб вказати на іншу версію Java, але, схоже, системна змінна не оновлюється в існуючому сеансі CMD. Можливо, досить було б просто створити нову сесію терміналу.
Убегеш

0

Це питання не запитував явно про Docker, але я отримав таку ж помилку, коли у мене був файл pom.xml, націлений на 1.9 ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

... але потім спробував запустити тести на контейнер Docker, вказавши "maven" сам по собі.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

Для мене виправлення полягало в тому, щоб націлити на потрібну мені версію.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(Ви можете дізнатися більше тут .)


0

На машині Windows можна тимчасово встановити версію Java.
Наприклад, щоб змінити версію на Java 8, запустіть цю команду cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65

0

Зробіть примусове оновлення Maven, яке принесе сумісні версії 1.8 Jar, а потім, будуючи, оновіть версії JRE в середовищі Execute до версії 1.8 із запуску конфігурацій та натисніть RUN


0

Якщо ви використовуєте Eclipse IDE, тоді перейдіть до меню Window та виберіть налаштування, і там ви шукаєте встановлені JRE та вибираєте JRE, необхідний для створення проекту


-4

Що в моєму випадку спрацювало так:

Я відкрив pom.xmlі замінив один із плагінів, як показано нижче.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Перш ніж редагувати теги джерела та цілі 1.8, я це змінив, 1.7і він працював.


Ви розумієте зміну, яку ви зробили, чи просто зробили зміну, сподіваючись на найкраще?
Popeye

І те й інше. Я розумію, що проект зараз працює на версії Java 1.7. Я зробив це, сподіваючись, що це спрацює.
VIJAYKUMAR REDDY ALAVALA
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.