Помилка: java: javacTask: випуск джерела 8 вимагає цільового випуску 1.8


889

Використання IntelliJ IDE не може зібрати жоден проект. Скріншоти налаштувань нижче:

Використовуваний JDK:

http://gyazo.com/b6e32119af7b04090d890cad04db6373

SDK проекту та рівень мови:

http://gyazo.com/55a5fc9f7f2bb721a04780ce9d74eeab

Мовний рівень:

http://gyazo.com/143bffad63fd89cafc231298729df2fc

У когось є ідеї?


1
Це не схоже на помилку від "чистого Intellij"; ти не використовуєш мурашиний сценарій чи щось таке?
fge


Відповіді:


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

Якщо ви використовуєте 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>

(Піднімається з коментарів.)

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


Працює в IntelliJ 14 Ultimate.
DtechNet

Для старих версій IDEA спробуйте: Налаштування -> Компілятор -> Компілятор Java -> Версія байт-коду на модуль
Jonik

88
Якщо ви перебуваєте на Mac, це в розділі Intellij IDEA> Налаштування ...> Збірка, виконання, розгортання> Java-компілятор
JP Armstrong

4
Для Intellij новіше , ніж 2016.2, є ще одне місце для перевірки: Project Structure -> Project Settings -> Modules -> Denpendencies -> Module SDK.
Брюс Нд

1
Якщо у вас є ієрархія POM з більш ніж двома рівнями, а ваш плагін компілятора визначений у батьківському POM, IntelliJ може не розпізнати його на найглибшому рівні. Я можу сказати, що це не так, тому що для деяких інших модулів це відбувається, навіть коли вони розширюють той самий батьківський POM.
Dormouse

202

Вам потрібно перейти в Налаштування та встановити під компілятором Java наступне: введіть тут опис зображення

також перевірте Налаштування проекту


116

Це виглядає як помилка, яку створює Maven, якщо у вас немає плагіну компілятора, налаштований правильно. Ось приклад конфігурації компілятора Java 8.

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<!-- ... -->

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

<!-- ... -->

</project>

10
Для інших новачків Maven , як я, це має бути під project, buildі потім plugins.
Даррен Хейл

4
Крім того, якщо <source>1.8</source>і <target>1.8</target>налаштовано, вищезгадана помилка може статися.
BuZZ-dEE

1
Це працювало для мене, дякую! Тег версії не вирішився (я змінив його, щоб він відповідав моїй версії Maven), тому я прокоментував це. Я вважаю, що Maven повинен автоматично отримати правильну останню версію в цьому випадку на основі цієї теми: stackoverflow.com/questions/17239394/… .
Борис

84

Найшвидший спосіб, який я знайшов:

  • натисніть: CTRL+ SHIFT+ A(для Mac + SHIFT+ A)
  • тип: java compiler
  • натисніть: ENTER

У вікні "Налаштування" встановіть цільовий байт-код на 1,8

(або 9 для java9)


3
Це абсолютно спрацювало для мене (спасибі!), Але я не розумію, чому це відрізняється від того, що є у pom.xml, настройках модуля тощо ...
Адам Лехенбауер

1
натисніть ⌘, щоб отримати перевагу.
X. Ван

31

Вирішити цю проблему можна двома способами:

  1. Встановити налаштування (File -> Settings -> Build, Execution, Deployment -> Java Compiler): введіть тут опис зображення
  2. Додайте розділ збірки до своїх pom.xml: введіть тут опис зображення

18

Багато відповідей щодо Maven вірні, але вам не доведеться налаштовувати плагін безпосередньо.

Як описано на сторінці вікі плагіну компілятора Apache Maven, ви можете просто встановити 2 властивості, використовувані плагіном.

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

1
@ Marvin Richter Я спробував ваше рішення, але воно не працює з IntelliJ - я припускаю, що це правильно в чистому складі maven (командний рядок), але IntelliJ просто ігнорує ці властивості. Мені довелося налаштувати плагін, як зазначено в інших рішеннях.
Бенуа

1
Ні, я цього не робив, бо інші рішення спрацювали. І тепер я мігрував свій проект на градле.
Бенуа

4
Працює як шарм після того, як ви зробите це клацанням правою кнопкою миші на pom.xml -> Maven -> Reimport. Це має бути прийнятою відповіддю для користувачів Maven.
птквск

Насправді вам потрібен плагін org.apache.maven.plugins:maven-compiler-pluginу вашому файлі pom або gradle, що в документації, що має намір сказати, полягає в тому, що встановлення цього властивості у властивостях pom буде достатньо, в основному тому, що вони встановлюють значення за замовчуванням плагіна, наприклад <source> $ { maven.compiler.source} </source>
EliuX

Це має бути прийнятою відповіддю. Працював для мене на IntelliJ 2018.2 на mac os 10.13.5
користувач674669

13

Я виправив це, перейшовши до Структура проекту -> Модулі , знайдіть розглянутий модуль, натисніть на вкладку Залежності та змініть Module SDKна Project SDK.


9

Я виправив це лише змінивши цільову версію компіляції на 1,8. Це в:

Файл >> Налаштування >> Збірка, виконання, розгортання >> Компілятор >> Компілятор Java


1
Спасибі, Вішаль. Ми повинні вказати версію байт-коду проекту або принаймні на модульну версію байт-коду з Intellij Idea. Просто встановлення його в pom.xml для maven-компілятора-плагіна не вирішило для мене проблеми.
WebComer


5

У моєму випадку я вирішив цю проблему, відкривши .iml файл проекту (він знаходиться в кореневій папці проекту та має ім’я, таке ж, як ім'я проекту) та змінивши рядок <orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" />на<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />

У мене все було налаштовано, як і в інших відповідях тут, але чомусь ідея оновила .iml файл неправильно.


2
Здається, інколи Intellij не оновлює конфігураційні файли, навіть коли ви налаштовували всі меню. Недійсні кеші та перезапуск (після редагування файлів конфігурацій) зробили для мене трюк. Дивно.
jah

1
Дуже дякую. Нарешті, після спроби та відмови кожного іншого рішення, зазначеного вище, це спрацювало.
Нітін Бансал

4

Я виправив це, змінивши свій файл POM. Помітьте останній коментар під найвищою оцінкою.

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF-8</encoding>
        </configuration>
</plugin>

Джерело має відповідати цілі.



3

Якщо ви працюєте з Android-студією 1.3, виконайте наведені нижче дії -

Перейдіть до файлу - Структура проекту

У розділі Модулі - додаток - Властивості , виберіть Сумісність джерел - 1,8 та

Цільова сумісність - 1,8 .

І вам добре піти.


3

У свій файл рівня програми Gradle >> compileOptions додайте ці два рядки

android {
  compileOptions {
    ...
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    ...
   }
}

Спасибі людина. Ваша відповідь спрацювала
Solution Spirit

1

Під файлом compiler.xml ви знайдете:

<bytecodeTargetLevel>
  <module name="your_project_name_main" target="1.8" />
  <module name="your_project_name_test" target="1.8" />
</bytecodeTargetLevel>

і ви можете змінити цільове значення зі свого старого на нове для мене, мені потрібно було змінити його від 1,5 до 1,8


1

Я щойно провів деякий час, бореться з тією ж проблемою. Єдине, що працювало для мене - це не використовувати вбудований mvn (3.3.9), а вказати його на зовнішню завантажену версію (3.5.0). Нарешті проект відкрився, і все було добре.


1

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


0

Для мене проблема полягала в тому, що Мейвен не зміг знайти належну конфігурацію, оскільки ці елементи були вказані у батьківській пам’яті.

Зміна файлу -> Налаштування -> Збірка, Виконання, Розгортання -> Maven -> Файл налаштувань користувача, щоб вказати на мої користувацькі налаштування з належними сховищами, виправлено проблему, яку інакше приховували.

Дізнайтеся про проблему за допомогою довідки -> Показати провіднику входу в систему -> натиснувши файл журналу, коли раніше отримали лише помилку в заголовку та "java.lang.NullPointerException" в консолі.


0

Вирішення проблеми дуже просте. Вам потрібно відкрити файл .idea / compiler.xml у вашому проекті İdea та

Вам слід написати відповідну цільову версію


0

У Intellij , використовуючи Maven , ви повинні перевірити, чи Intellij автоматично імпортував ваш проект. Ви можете перевірити, натиснувши на вкладку Maven праворуч від вашого редактора.

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

Якщо вашого проекту тут немає, додайте pom.xmlфайл, натиснувши на +.

Очевидно, що проект також повинен мати відповідні <build/>:

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

0

Якщо жоден з інших відповідей не працює, перевірте свій модуль SDK .

У мене виникла помилка після того, як я оновив проект SDK до 1,8, компілятор Javac до 1,8 і т.д.

(у Linux) Перейдіть до File > Project Structure...цього у вікні, що відкриється, виберіть Modulesпід Project Settings. Виберіть відповідний модуль зі списку, а потім Dependenciesвкладку та переконайтеся, що Module SDKвстановлено відповідним чином.


0

Я перевірив усе вищесказане, але помилка все-таки виникає.

Але повторний імпорт всіх Maven Projects (кнопка перезавантаження на панелі Maven Projects) працює в моєму випадку.


0

Не забудьте встановити залежності для свого модуля: введіть тут опис зображення

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