Intellij – Невозможно использовать новые classы Java 8 – Ошибка: «Использование API, зарегистрированное как @since 1.6+ ..»

Я пытаюсь использовать java.lang.function.Function в моей базе кода java 8, но я продолжаю получать следующую ошибку в Intellij.

Использование API, зарегистрированное как @since 1.6+. Эта проверка обнаруживает все способы использования методов, которые имеют тег @since в своей документации. Это может быть полезно, когда разработка выполняется в рамках новой версии SDK в качестве целевой платформы для производства

Кажется, у меня есть правильные настройки Project и Compiler

Настройки проекта: (Файл -> Структура проекта)

 Project Settings -> Project -> Project SDK = Java 1.8 Project Settings -> Project -> Project Language Level = 8 - Lambdas, Type Annotations etc 

Параметры компилятора: (Файл -> Настройки)

 Build, Execution, Deployment -> Compiler -> Java Compiler -> Project Bytecode Version : 1.8 Build, Execution, Deployment -> Compiler -> Java Compiler -> Per module Bytecode Version -> Target Bytecode Version : 1.8 

В чем проблема?

Отредактировал ответ на основе комментария Бастиана Янсена.

Похоже, что существует еще один параметр проекта, который влияет на уровень компилятора. Тонкая индикация этой проблемы заключается в том, когда ваш компилятор начинает жаловаться на версию исходного и целевого Java, отличную от той, которую вы указали при компиляции кода

 Warning:java: source value 1.5 is obsolete and will be removed in a future release Warning:java: target value 1.5 is obsolete and will be removed in a future release Warning:java: To suppress warnings about obsolete options, use -Xlint:-options. 

Чтобы избавиться от этого, вам нужно открыть

File -> Project Structure -> Project Settings -> Modules -> "Your Module Name" -> Sources -> Language Level

и измените его на желаемый уровень, т.е. 1,8 или уровень языка Project Default

Если вы используете maven, тогда добавьте строку ниже в файл конфигурации pom.xml, а затем повторно импортируйте или создайте его из maven.

    org.apache.maven.plugins maven-compiler-plugin 3.3  1.8 1.8     

Else выберите java-компилятор и уровень языка ниже.

Файл> Структура проекта> Настройки проекта> Модули> имя вашего модуля> Источники> Уровень языка> выберите тот, который вам нужен.

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

Измените уровень языка отсюда: –

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

Фактически, если вы используете Maven и ваши pom.xml проекта pom.xml настроены правильно

  

Файл> Настройки> Сборка, выполнение, развертывание> Компилятор Java

Измените целевую версию байт-кода на 1.8 модуля, над которым вы работаете.

Если вы используете Maven

Добавьте плагин компилятора в pom.xml под узлом проекта верхнего уровня:

    org.apache.maven.plugins maven-compiler-plugin  1.8 1.8     

Возможно, в вашем конфиге репозитория есть свойства, включая версию компилятора. проверьте файл settings.xml .

 1.8   1.8 1.8 1.8  

Есть еще одно место, которое может вызвать эту проблему, независимо от того, используете ли вы Maven или Gradle или нет.

В Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level Settings | Editor | Inspections | Java language level migration aids | Usages of API which isn't available at the configured language level , по умолчанию (по-моему) установлено значение « Respecting to project language level settings , но его можно установить на « Higher than: которое игнорирует параметры проекта.

Это означает, что если вы следуете инструкциям в других ответах и ​​устанавливаете уровень языка вашего проекта, скажем, 8, но для проверки установлено значение Higher than: 7 , IDEA по-прежнему будет подгонять.

Я только что зафиксировал это следующим образом:

Щелкните правой кнопкой мыши проект -> Открыть настройки модуля -> Модули -> Источники -> 8 или выше

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

А потом

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

Если вы все еще сталкиваетесь с ошибкой и используете maven , вам нужно добавить конфигурацию сборки в свой pom.xml :

    org.apache.maven.plugins maven-compiler-plugin  1.8 1.8     

Если вы используете Gradle, не забудьте удостовериться, что следующее значение равно 1.8, а не 1.5 (например, по какой-то причудливой причине в Intelij оно по умолчанию равно 1,5), поэтому независимо от того, что вы делаете на уровне проекта, чтобы установить компилятор уровень совместимости, этот параметр приведет к тому, что он продолжит давать вам проблемы с функциями Java 8, которые он не распознает:

 version '1.0-SNAPSHOT' apply plugin: 'groovy' apply plugin: 'java' sourceCompatibility = 1.8 
  • Вычислить дни между двумя датами в Java 8
  • Почему этот Java-stream работает дважды?
  • Как суммировать список целых чисел с streamами java?
  • Обратный компаратор в Java 8
  • LocalDate - java.util.Date и наоборот - простое преобразование?
  • Справочник по методу экземпляра и lambda-параметры
  • Шифрование ECDHE не поддерживается на OpenJDK 8, установленном на компьютере EC2 Linux
  • Группировка по значению объекта, подсчет, а затем установка группового ключа с помощью максимального атрибута объекта
  • Как анализировать / форматировать даты с помощью LocalDateTime? (Java 8)
  • Java 8 Iterable.forEach () vs foreach loop
  • Форматирование продолжительности в Java 8 / jsr310
  • Interesting Posts

    Редактирование значений словаря в цикле foreach

    Добавить запятую к номерам каждые три цифры

    Is Task.Run считается плохой практикой в ​​веб-приложении ASP .NET MVC?

    Отправка и получение SMS и MMS на Android (pre Kit Kat Android 4.4)

    Могу ли я увидеть журнал сеансов SMTP, когда Mail.app подключается к серверу SMPT?

    Сохраните одну веб-страницу (с фоновым изображением) с помощью Wget

    В чем разница между различными типами кабелей, такими как Cat 5, Cat 5e и Cat 6?

    Есть ли способ изменить пароль текущей учетной записи пользователя с помощью командной строки?

    android.app.Application нельзя использовать для android.app.Activity

    Как установить учетную запись?

    Не удается удалить атрибут только для чтения из окон папки 8.1

    Поиск расстояния от значения RSSI устройства Bluetooth с низким энергопотреблением

    Не удалось установить жесткие диски в оболочку установщика Debian

    Имя свойства INotifyPropertyChanged – hardcode vs reflection?

    Как настроить Windows 7 для потоковой передачи медиафайлов на PS3?

    Давайте будем гением компьютера.