Avatar ·

Ошибка javacTask: source release 8 requires target release 1.8 в IntelliJ IDEA

Всем привет! Я новичок в Java и только начал изучать язык. Использую IntelliJ IDEA Community Edition. Создал простой проект, написал небольшой код: ```java public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` При попытке запустить проект через IDE (Shift+F10) получаю ошибку: ``` Error:java: javacTask: source release 8 requires target release 1.8 ``` Я использую Java 8 (jdk1.8.0_281), установленную на Windows. В настройках проекта (File → Project Structure → Project) стоит SDK 1.8 и Language level 8. В модулях тоже всё настроено на 8. Но ошибка всё равно появляется. Перепробовал много советов из интернета: чистил кеш (File → Invalidate Caches), пересобирал проект (Build → Rebuild Project), менял настройки компилятора (Settings → Build, Execution, Deployment → Compiler → Java Compiler). Ничего не помогает. Ошибка возникает при каждой попытке компиляции. Подскажите, пожалуйста, что я делаю не так? Как исправить эту ошибку? Может быть, нужно что-то дополнительно настроить в файлах .iml или в pom.xml (я использую Maven)? Буду благодарен за подробное объяснение! <<>>

Причина ошибки

Ошибка javacTask: source release 8 requires target release 1.8 возникает, когда в настройках компиляции Java указан уровень исходного кода (source) 8, но уровень целевого байт-кода (target) не соответствует ему или не задан явно. Компилятор требует, чтобы target был не ниже source. В вашем случае source = 8, а target, вероятно, установлен в более низкую версию (например, 1.7) или не задан вовсе.

Почему это происходит в IntelliJ IDEA

IntelliJ IDEA может переопределять глобальные настройки компилятора настройками конкретного модуля или профиля Maven/Gradle. Если в проекте используется система сборки (Maven, Gradle), её настройки имеют приоритет над настройками IDE.

Решение

Вот несколько способов исправить ошибку:

Способ 1: Настройка компилятора в IntelliJ IDEA (глобально)

  1. Откройте File → Settings → Build, Execution, Deployment → Compiler → Java Compiler.
  2. В разделе Per-module bytecode version найдите ваш модуль (обычно называется как проект).
  3. Установите для него Target bytecode version = 1.8. Если поле пустое или стоит другое значение (например, 1.7), измените его.
  4. Нажмите Apply → OK.
  5. Пересоберите проект: Build → Rebuild Project.

Способ 2: Если используете Maven

Добавьте в pom.xml следующие свойства:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Или используйте более современный синтаксис (для Java 8+):

<properties>
    <maven.compiler.release>8</maven.compiler.release>
</properties>

После изменений выполните Maven → Reload Project (кнопка с двумя синими стрелками в правом верхнем углу окна Maven).

Способ 3: Если используете Gradle

В файле build.gradle добавьте:

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

Или для Kotlin DSL (build.gradle.kts):

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

Способ 4: Проверка настроек модуля

  1. Откройте File → Project Structure → Modules.
  2. Выберите ваш модуль, перейдите на вкладку Sources.
  3. Убедитесь, что Language level = 8 - Lambdas, type annotations etc..
  4. Перейдите на вкладку Paths и проверьте Compiler output path — он должен указывать на существующую папку (например, out).

Что делать, если ничего не помогло?

  • Попробуйте удалить папку .idea и файлы *.iml из корня проекта, затем заново откройте проект в IntelliJ IDEA (она пересоздаст их).
  • Проверьте версию JDK: File → Project Structure → Project → SDK. Убедитесь, что выбран JDK 8, а не JRE.
  • Обновите IntelliJ IDEA до последней версии (иногда это исправляет баги с компилятором).

После любого из этих шагов обязательно выполните Build → Rebuild Project и File → Invalidate Caches / Restart.

<<>>

Альтернативный подход: проверка файла .iml и настроек компилятора в IDEA

Если стандартные настройки не помогают, проблема может быть в файле конфигурации модуля .iml. IntelliJ IDEA иногда сохраняет устаревшие настройки компиляции в этом файле.

Решение:

  1. Закройте IntelliJ IDEA.
  2. Найдите в корневой папке проекта файл с расширением .iml (например, my-project.iml).
  3. Откройте его в текстовом редакторе.
  4. Найдите блок <component name="NewModuleRootManager"> и внутри него <orderEntry type="inheritedJdk" />.
  5. Убедитесь, что рядом нет элементов с sourceLanguageLevel или targetLanguageLevel, которые переопределяют настройки. Если есть, удалите их.
  6. Сохраните файл и откройте проект заново.

Дополнительный совет:

Также проверьте настройки компилятора в Settings → Build, Execution, Deployment → Compiler → Java Compiler → Use compiler. Убедитесь, что выбран Javac, а не Eclipse Compiler. Иногда переключение на Eclipse Compiler и обратно на Javac сбрасывает кэш и исправляет ошибку.

Если вы используете Windows, проверьте, что переменная окружения JAVA_HOME указывает на JDK 8 (например, C:\Program Files\Java\jdk1.8.0_281). IntelliJ IDEA может использовать системную переменную, если в настройках проекта не указан явный путь к JDK.