Неустранимая ошибка компиляции: неверный целевой релиз: 1.8 -> [Help 1]


171

Проблема, аналогичная той, которая была опубликована в неверной целевой версии: 1.7, но после просмотра блога моя проблема все еще не решена.

Не удалось выполнить цель org.apache.maven.plugins: maven-compiler-plugin: 3.1: compile (default-compile) для проекта hm_app: фатальная ошибка компиляции: недопустимый целевой выпуск: 1.8 -> [Help 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 и нет 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> и я мог бы также использовать mvn compile на java7
rvd

Ответы:


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>
rvd

1
Именно здесь Maven ищет версию Java. Таким образом, вы фактически изменили версию Java на ту, которую вы установили на свой% JAVA_HOME.
Завиор

2
На моем Mac я экспортирую JAVA_HOME =, /usr/libexec/java_home -v 1.8чтобы установить JAVA_HOME в правильном месте для 1.8 JDK. Поставь свою любимую версию вместо 1.8. (Есть обратные помехи после = и после 8).
Брюс Шалвински

Да, верно, ты меня понял. Я изменил его, чтобы скомпилировать еще одну унаследованную программу, которая поддерживает только 1.7: D Спасибо!
Давут Гюрбюз

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 "Run configuration" использовал неправильную JRE (1.7). Не забудьте проверить Run -> Run Configurations -> (Tab) 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. Perferences -> Установленные JRE -> выберите JAVA SE 8 1.8 введите описание изображения здесь

  3. Перестройте через maven, используя Run as 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 всех файлов вашего домашнего каталога, вам необходимо:

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

1

Проблема, с которой я столкнулся, заключалась в том, что я смог сделать сборку maven из командной строки, но не из Eclipse. Для меня в eclipse сработало то, что я изменил конфигурацию запуска так, чтобы она указывала на папку JRE внутри JDK, а не оставляла ее в Папка JDK только в соответствии со стандартом. Это решение может работать и для вас, но попробуйте это, если и только если все пути java верны, java и javac показывают ту же версию, что и в целевом файле pom.xml.


Это была моя проблема и решение.
Skychan

1

Я столкнулся с этой проблемой при развертывании на Dokku, по какой-то причине он выбирал JDK 1.7

Создание system.propertiesфайла и настройка java.runtime.version=1.8решили проблему. Dokku теперь использует версию 8 Java. Выбор 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.
Кортекс

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 Configurations и нажмите RUN


0

Если вы используете Eclipse IDE, зайдите в меню «Окно» и выберите настройки, и там вы найдете установленные 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>

До того, как я отредактировал теги source и target 1.8, я изменил их на 1.7и это сработало


Вы понимаете изменения, которые вы сделали, или вы просто сделали изменения, надеясь на лучшее?
Popeye

Обе. Я понимаю, что проект сейчас работает на версии Java 1.7. Я сделал это, надеясь, что это сработает.
VIJAYKUMAR REDDY ALAVALA
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.