IDEA: javac: исходная версия 1.7 требует целевой версии 1.7

474

При запуске теста JUnit, используя IntelliJ IDEA, я получаю

введите описание изображения здесь

Как я могу это исправить?

  • Использование SDK 1.7
  • Уровень владения языком модуля составляет 1,7

Maven build работает отлично. (Вот почему я верю в это в проблеме конфигурации IDEA)

Джеймс Райцев
источник

Ответы:

689

Скорее всего, у вас неверные параметры компилятора, импортированные из Maven:

параметры компилятора

Также проверьте настройки байт-кода ( целевой ) версии проекта и модуля, указанные на скриншоте.

Другие места, где настроен уровень исходного языка:

  • Структура проекта | проект

проект

  • Структура проекта | Модули (проверьте каждый модуль) | источники

источники

Уровень языка Maven по умолчанию - 1,5 (5,0), вы увидите эту версию как уровень языка модуля на снимке экрана выше.

Это можно изменить, используя конфигурацию maven-compiler-plugin внутри pom.xml:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

или

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

IntelliJ IDEA будет соблюдать этот параметр после повторного импорта проекта Maven в окне инструментов проектов Maven :

реимпорта

CrazyCoder
источник
2
Правильный. Этот параметр является общим для всех модулей в проекте, или он специфичен для данного модуля?
Джеймс Райцев
1
Этот параметр для каждого проекта влияет на все модули.
CrazyCoder
8
Есть ли какая-то причина, почему после исправления этого и применения этого оно вернулось бы к некоторому неправильному значению (либо через изменения maven, либо как-то еще)?
Патрик
5
@Patrick, конфигурация вашего pom.xmlподключаемого модуля java-компилятора может указывать версию Java, которая будет переопределять этот параметр при следующем внесении изменений в файл pom.xml (если включено автоматическое повторное импортирование) или повторном импорте проекта вручную.
CrazyCoder
1
@CrazyCoder Я изменил свой pom.xml после того, как изменил его один раз намного раньше (ожидал других входящих изменений в pom), так что это звучит как довольно разумное объяснение. Спасибо
Патрик
358

IntelliJ 15, 2016 и 2017

Аналогично обсужденному ниже для IntelliJ 13 и 14, но с дополнительным уровнем на панели «Настройки / Предпочтения»: « Настройки» > « Сборка», «Выполнение», «Развертывание» > « Компилятор» > « Компилятор Java» .

введите описание изображения здесь

IntelliJ 13 и 14

В IntelliJ 13 и 14 проверьте Настройки> Компилятор> Пользовательский интерфейс компилятора Java, чтобы убедиться, что вы не ориентируетесь на другую версию байт-кода в своем модуле.

введите описание изображения здесь

Дрю Ноакс
источник
3
Я должен был удалить свои модули и позволить ему автоматически разрешать (оставьте пустым для jdk по умолчанию)
Akin Okegbile
3
Работы по последним Idea14.1
Tushar
Так в чем же здесь проблема?
Алик Эльзин-килака
@ AlikElzin-kilaka, установите целевой уровень на то, что вам нужно.
Дрю Ноакс
Может кто-нибудь объяснить, почему они помещают определенные настройки модуля в экран настроек глобальных настроек, а не в настройки модуля?
МК.
61

В IntelliJ IDEA 14.1 «Целевая версия байт-кода» находится в другом месте.

Следующее изменение сработало для меня:

Файл> Настройки ...> Построение, выполнение, развертывание> Компилятор> Компилятор Java : измените целевую версию байт-кода с 1.5 на 1.8

введите описание изображения здесь

введите описание изображения здесь

ROMANIA_engineer
источник
или лучше оставить пустым, если это можно определить из jdk!
Драконорожденный
Почему конфигурация отличается от конфигурации maven?
Алик Эльзин-килака
42

Посмотрели ли вы конфигурацию сборки, должно быть так, если вы используете Maven 3 и JDK 7

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>
swissonid
источник
22

Я столкнулся с этим, и исправлением было перейти в «Настройки проекта»> «Модули»> нажать на конкретный модуль> вкладка «Зависимости». Я заметил, что Module SDK все еще установлен на 1.6, я изменил его на 1.7, и он работал.

Роб Баррека
источник
Я попробовал это ... Мне пришлось удалить отдельные модули и оставить их для автоматического разрешения.
Akin Okegbile
14

Я нашел обязательные параметры («целевая версия байт-кода») в настройках> компилятор> Java-компилятор в моем случае (идея Intelij 12.1.3)

Эгер
источник
10

Измените файл настроек компилятора проекта по следующему пути и измените «target» на 1.7:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>
Джо Ченг
источник
Спасибо, это сработало для меня! Не забудьте выполнить «Make Module» [название вашего приложения] », щелкнув правой кнопкой мыши по проекту
Shehaaz
5

Я решил это, установив поле пустым:

Настройки> Компилятор> Компилятор Java> Версия байт-кода проекта

Чем IntelliJ использует версию JDK по умолчанию.

Роберт Мощински
источник
4

С одного момента на другой я тоже получал эту ошибку без четкой причины. Я изменил все настройки на компиляторе / модуле и т. Д. Но в конце я просто воссоздал проект IntelliJ путем повторного импорта проекта Maven, и проблема была решена. Я думаю, что это ошибка.

IntelliJ 12 129,961

pveentjer
источник
То же самое и для IntelliJ 14.1.2. Повторно импортировал проект, и он был исправлен.
Срикант
4

Я сделал это после небольшого обновления IntelliJ IDEA 14 до версии 14.1. Для меня поменялось редактирование top / parent pom, а затем щелкнул повторно импортировать Maven (если он не автоматический).

Но, может быть, достаточно щелкнуть правой кнопкой мыши на модуле (модулях) / агрегатном / родительском модуле и Maven -> Reimport.

OMAX
источник
это сработало для меня! я сделал это для моего модуля верхнего уровня и моих дочерних модулей
абелляция
2

Я решил ниже метод

Файл >> Структура проекта >> Проект >> Уровень языка проекта -> установить правильную версию (например: 1.5)

мати
источник
1

проверяйте .idea / misc.xml иногда вам нужно вручную изменить атрибут languageLevel = "JDK_1_X"

кай
источник
1

Если это проект Gradle, в вашем файле build.gradle найдите следующие параметры:

sourceCompatibility = "xx"
targetCompatibility = "xx"

Для всех подпроектов в вашем корневом файле build.gradle вы можете поместить:

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

Хотя языковые уровни можно установить вручную в Idea> Настройки, если это проект Gradle, Idea автоматически синхронизирует файлы модуля .iml из настроек Gradle (протестировано с Idea 15+). Таким образом, все ваши ручные изменения отменяются при обновлении gradle.

На основании документации Gradle , если они не установлены, используется текущая конфигурация JVM.

Кагатай Калан
источник
1

Я нашел другой способ столкнуться с этой ошибкой. Вы можете получить это, если вы реорганизовали структуру каталогов, и один из ваших poms указывает на старого родителя, который больше не настраивает javac (потому что эта конфигурация была перемещена на средний уровень). Если это происходит, верхний уровень по умолчанию равен 1,5, а неправильно ведущий себя нижний уровень наследует его.

Поэтому, когда вы видите эту ошибку, вы должны проверить, что ваша структура pom соответствует вашей структуре каталогов.

Гас
источник
1

Если сборка Maven работает нормально, попробуйте синхронизировать структуру проектов Maven и IntelliJ IDEA.

В окне инструментов Maven нажмите кнопку обновленияобновление . При нажатии этой кнопки IntelliJ IDEA анализирует структуру проекта в окне инструментов Maven.

Обратите внимание, что это может не помочь, если вы используете сборку EAP, поскольку функция синхронизации Maven иногда может быть нарушена.

naXa
источник
0

Убедитесь, что выбрана правильная зависимость. Файл> Структура проекта

Выберите свой проект и перейдите на вкладку Зависимости. Выберите правильную зависимость из выпадающего списка или создайте новую.

Вирадж Кулкарни
источник
0

Если все предыдущие решения не сработали для вас (как в моем случае), вы можете удалить файлы конфигурации intellij:

  • project_directory / .idea / compiler.xml
  • project_directory / .idea / encodings.xml
  • project_directory / .idea / misc.xml
  • project_directory / .idea / modules.xml
  • project_directory / .idea / vcs.xml
  • project_directory / .idea / workspace.xml
  • и т.п.

Intellij будет восстанавливать новые позже. Однако, будьте осторожны, это также приведет к удалению всей конфигурации intellij, выполненной на projet (то есть: конфигурация режима отладки, ...)

Юнесс Мархрани
источник
0

Вам необходимо изменить версию компилятора Java в конфигурации сборки.

введите описание изображения здесь

Нирбхай Рана
источник