it-swarm.com.ru

функция intellij (...) не поддерживается на этом уровне языка. Я не могу скомпилировать

IntelliJ показывает мне эта ошибка

Я только что собрал свой новый компьютер, и ни один из моих Java-компонентов не работает ... Мой обычный Intellij работал, когда я впервые попробовал его, но моя Android-студия не установилась, потому что не могла найти путь к jdk. Здесь это вопрос, который я задавал об этом. Так как это не сработало, мне пришлось переустанавливать Java несколько раз, и теперь мой IntelliJ не работает. Вот изображение ошибки (я получаю сообщение об ошибке, которое говорит мне, что циклы for-each не поддерживаются на этом уровне языка).

Я попытался установить JDK на диск D :, но это не сработало. В настоящее время я пытаюсь использовать Java 1.8u71 (пробовал u65 и 1.7u47), за исключением того, что ни один из них не работал.

18
Seth G.

IntelliJ показывает мне эту ошибку

are not supported at this language level

Сопоставление SDK/JDK с уровнем языка проекта

Чтобы активировать функции языка Java в редакторе, вам нужно изменить структуру проекта модуля или настройки модуля , чтобы обеспечить Project SDK соответствует уровню языка проекта .

Project SDK (JDK) Java 1.5 соответствует уровню языка проекта 5 ...

Java 1.6 соответствует уровню языка 6 ...

Java 1.7 соответствует языковому уровню 7 и так далее.

Пример

В зависимости от вашей версии IntelliJ, нажмите F4 или же Ctrl + Alt + Shift - S на вашем модуле в панели проекта, или нажмите Ctrl + Shift - A и введите либо "Структура проекта", либо "Настройки модуля", чтобы открыть диалоговое окно "Структура проекта".

В разделе Настройки проекта щелкните первый элемент в списке, Проект .

На приведенном ниже снимке экрана Project SDK 1.8 (Java version '1.8.0_72') соответствует выбранному уровню языка SDK Default (8 - Lambdas, type annotations etc.), поскольку Java 1.8 соответствует SDK уровня 8. Это активирует языковые функции Java 8 для использования в редакторе.

project structure

Если у вас нет JDK, настроенного под Project SDK, это другая проблема. Решите это сначала, нажав New и добавив JDK.

31
activedecay

Когда у меня в проекте было несколько независимых модулей, мне нужно было выполнить настройку ниже, в дополнение к @ activedecay's answer : В разделе Project Settings нажмите на Modules. Выберите конкретный модуль. Выберите подходящий Language Level.

 Screenshot

15
ramtech

У меня была такая же проблема, и ни одно из найденных решений не сработало. 

Я использовал проекты Maven и решил попробовать запустить maven install. Там тоже сказано:

[ERROR]  thefile.Java:[24,77] diamond operator is not supported in -source 1.5
[ERROR] (use -source 7 or higher to enable diamond operator)
[ERROR] theFile.Java:[91,62] lambda expressions are not supported in -source 1.5
[ERROR] (use -source 8 or higher to enable lambda expressions)

Поэтому я добавил свойства в файл pom.xml сборки Maven:

<properties>
    <spring.version>4.1.6.RELEASE</spring.version>
    <Java.version>1.8</Java.version>
    <maven.compiler.source>${Java.version}</maven.compiler.source>
    <maven.compiler.target>${Java.version}</maven.compiler.target>
</properties>

И обновил проект Maven в IntelliJ. Это сработало!

2
HankCa

У меня тоже была такая же проблема.

Когда я обращался к статическому методу интерфейса через имя интерфейса, я получил сообщение об ошибке

вызовы статического интерфейса не поддерживаются на этом уровне языка 5

Поскольку это Java 1.8, я проверил некоторые вещи:

  1. Я использую Intellij. Итак, делая CTRL+ALT+SHIFT+S Откроется диалоговое окно "Структура проекта", перейдите к

    Проект -> Уровень проекта

    установите для SDK значение по умолчанию (8-лямбда, аннотации типов и т. д.).

  2. В структуре проекта открыто

    Модули -> Источники -> Уровень языка

    установите для этого параметра значение по умолчанию (8-лямбда, аннотации типов и т. д.).

  3. Применить-> ОК.

Тогда ошибка исчезнет.

2
kranti

Еще одна проблема, которая привела к этой ошибке в проекте Gradle, была настройка sourceCompatibility в файле build.gradle. Это также должно соответствовать значению, которое вы ожидаете получить. Значение по умолчанию, которое IntelliJ использовал при создании нового проекта Gradle, - 1.5. Например, если вы используете лямбду, это приведет к сбою сборки.

1
melston