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