Ошибка javacTask: source release 8 requires target release 1.8 в IntelliJ IDEA
Причина ошибки
Ошибка 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 (глобально)
- Откройте File → Settings → Build, Execution, Deployment → Compiler → Java Compiler.
- В разделе Per-module bytecode version найдите ваш модуль (обычно называется как проект).
- Установите для него Target bytecode version =
1.8. Если поле пустое или стоит другое значение (например, 1.7), измените его. - Нажмите Apply → OK.
- Пересоберите проект: 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: Проверка настроек модуля
- Откройте File → Project Structure → Modules.
- Выберите ваш модуль, перейдите на вкладку Sources.
- Убедитесь, что Language level =
8 - Lambdas, type annotations etc.. - Перейдите на вкладку 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 иногда сохраняет устаревшие настройки компиляции в этом файле.
Решение:
- Закройте IntelliJ IDEA.
- Найдите в корневой папке проекта файл с расширением
.iml(например,my-project.iml). - Откройте его в текстовом редакторе.
- Найдите блок
<component name="NewModuleRootManager">и внутри него<orderEntry type="inheritedJdk" />. - Убедитесь, что рядом нет элементов с
sourceLanguageLevelилиtargetLanguageLevel, которые переопределяют настройки. Если есть, удалите их. - Сохраните файл и откройте проект заново.
Дополнительный совет:
Также проверьте настройки компилятора в 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.
Ответов пока нет.
Войдите чтобы оставить ответ