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-компілятор всередині 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 Projects :

реімпорт


2
Правильно. Чи ця настройка є загальною для всіх модулів у проекті, чи вона специфічна для даного модуля?
Джеймс Райцев

1
Цей параметр відповідає проекту, впливає на всі модулі.
CrazyCoder

8
Чи є якась причина, чому після виправлення цього та застосування цього пункту він повернеться до якогось неправильного значення (або через зміни Maven, або щось)?
Патрік

5
@Patrick, ваша pom.xmlконфігурація модуля компілятора Java може вказати версію Java, яка змінить це налаштування наступного разу, коли ви внесете зміни до pom.xml (якщо включений автоматичний повторний імпорт) або реімпортуйте проект вручну.
CrazyCoder

1
@CrazyCoder Я змінив свій pom.xml після того, як змінив це колись набагато раніше (чекав на інші вхідні зміни до пам’яті), так що це звучить як досить розумне пояснення. Спасибі
Патрік

358

IntelliJ 15, 2016 та 2017

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

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

IntelliJ 13 і 14

У IntelliJ 13 та 14 перевірте Параметри> Компілятор> Користувальницький інтерфейс Java Compiler, щоб переконатися, що ви не орієнтуєтесь на іншу версію байт-коду у своєму модулі.

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


3
Мені довелося видалити свої модулі і дозволити автоматичному вирішенню (залишити порожнім для jdk за замовчуванням)
Akin Okegbile

3
Роботи за останніми Idea14.1
Tushar

То що тут виправлення?
AlikElzin-kilaka

@ AlikElzin-kilaka, встановіть цільовий рівень на все, що вам потрібно.
Дрю Ноакс

Чи може хтось пояснити, чому вони розміщуватимуть конкретні параметри модуля на екрані налаштувань глобальних налаштувань, а не в налаштуваннях модуля ??
МК.

61

У IntelliJ IDEA 14.1 "Цільова версія байт-коду" знаходиться в іншому місці.

Наступна зміна спрацювала для мене:

Файл> Налаштування ...> Створення, виконання, розгортання> Компілятор> Компілятор Java : змініть цільову версію байт-коду з 1,5 на 1,8

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

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


або краще залишити його порожнім, коли це можна визначити з jdk!
Dragonborn

Чому існує інша конфігурація, ніж Maven's?
AlikElzin-kilaka

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>

22

Я наткнувся на це, і виправлення було, щоб перейти в Налаштування проекту> Модулі> натиснути на конкретний модуль> вкладку Залежності. Я помітив, що модуль SDK все ще був встановлений на 1.6, я змінив його на 1.7, і він працював.


Я спробував це ... Мені довелося видалити окремі модулі та залишити їх для автоматичного вирішення.
Akin Okegbile

14

Я знайшов потрібні параметри ("цільова версія байтового коду") у налаштуваннях> компілятор> компілятор Java в моєму випадку (інтелідж ідея 12.1.3)


10

Змініть файл налаштування компілятора проекту наступним шляхом та змініть «ціль» на 1,7:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>

Дякую, це працювало для мене! Не забудьте зробити "Зробити модуль" [назва вашої програми] "" клацанням правою кнопкою миші на проекті
Shehaaz

5

Я вирішив це, встановивши поле порожнім:

Налаштування> Компілятор> Компілятор Java> Версія байт-коду проекту

Тоді IntelliJ використовує версію JDK за замовчуванням.


4

З однієї миті в іншу я також отримав цю помилку без чіткої причини. Я змінив усі налаштування компілятора / модуля і т. Д. Але врешті-решт я просто відтворив проект IntelliJ, повторно імпортувавши проект Maven, і питання було вирішено. Я думаю, що це помилка.

IntelliJ 12 129.961


Те саме тут для IntelliJ 14.1.2. Повторно імпортували проект, і він був виправлений.
srikanth

4

Я домігся цього лише після незначного оновлення IntelliJ IDEA 14 до v14.1. Для мене змінилася редакція верхньої / батьківської пам’яті, а потім натиснув повторний імпорт Maven (якщо він не є автоматичним).

Але, можливо, достатньо клацнути правою кнопкою миші на модулі / агрегаті / батьківському модулі та Maven -> Reimport.


це працювало для мене! я зробив це для мого модуля вищого рівня та моїх дочірніх модулів
анулювання

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> Settings, якщо це проект Gradle, Idea автоматично синхронізує файли .iml модуля з налаштувань Gradle (протестовано з Idea 15+). Таким чином, всі ваші зміни вручну переосмислюються, коли Gradle оновлюється.

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


1

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

Тож ще одна річ, яку потрібно перевірити, коли ви бачите цю помилку, це те, що ваша структура pom відповідає відповідній структурі вашого каталогу.


1

Якщо збірка Maven працює нормально, спробуйте синхронізувати структуру проектів Maven та IntelliJ IDEA.

У вікні інструменту Maven натисніть кнопку оновлення оновити. Натиснувши цю кнопку, IntelliJ IDEA аналізує структуру проекту у вікні інструменту Maven.

Зауважте, що це може не допомогти, якщо ви використовуєте збірку EAP, оскільки функція синхронізації Maven іноді може бути порушена.


0

Переконайтесь, що вибрано правильну залежність. Файл> Структура проекту

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


0

Якщо всі попередні рішення не працювали для вас (що було в моєму випадку), ви можете видалити конфігураційні файли intellij:

  • project_directory / .idea / compiler.xml
  • project_directory / .idea / encodings.xml
  • project_directory / .idea / misc.xml
  • project_directory / .idea / module.xml
  • project_directory / .idea / vcs.xml
  • project_directory / .idea / workspace.xml
  • тощо.

Пізніше Intellij відновить нові. Однак будьте обережними, це також видалить усю конфігурацію Intellij, зроблену на проекті (тобто: конфігурація режиму налагодження, ...)


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