Intellij - Невозможно использовать новые классы 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

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

Ответ 1

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

Кажется, что существует другой проект, который влияет на уровень компилятора. Тонкая индикация этой проблемы заключается в том, когда ваш компилятор начинает жаловаться на версию исходного и целевого 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

Ответ 2

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

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

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

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

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

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

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

Ответ 3

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

<project xmlns="...> 
....
<properties>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project

Вы можете reimport параметры Maven в проект intellij-idea - щелкнуть правой кнопкой мыши по корневой записи проекта, а затем Maven -> Reimport, которая находится внизу.

изображение показывает, что Maven является вторым от последнего элемента в меню правой кнопки меню

Ответ 4

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

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

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

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

<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>

Ответ 5

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

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

enter image description here

А потом

enter image description here

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

<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>

Ответ 6

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

version '1.0-SNAPSHOT'

apply plugin: 'groovy'
apply plugin: 'java'

sourceCompatibility = 1.8

Ответ 7

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

<jdk>1.8</jdk>
</activation>
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>

Ответ 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 по-прежнему будет подгонять.