Intellij – 无法使用较新的Java 8类 – 错误:“使用API​​logging为@since 1.6+ ..”

我想在我的Java 8代码库中使用java.lang.function.Function ,但我不断收到以下错误在Intellij中。

以@since 1.6+formslogging的API的用法此检查查找文档中具有@since标记的方法的所有用法。 当在新的SDK版本下进行开发作为生产的目标平台时,这可能会很有用

我似乎有正确的项目和编译器设置

项目设置:(文件 – >项目结构)

 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 

问题是什么?

根据Bastien Jansen的评论编辑答案。

似乎有另一个项目设置影响编译器级别。 这个问题的一个微妙的指示是当你的编译器开始抱怨源和目标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或项目默认语言级别

如果您使用的是maven,那么在您的configurationpom.xml文件中添加下面的行,然后重新导入或从maven构build它。

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

否则从下面的path中selectjava编译器和语言级别。

文件>项目结构>项目设置>模块>您的模块名称>来源>语言级别>select您需要的一个。

在这里输入图像说明

从这里更改语言级别: –

在这里输入图像说明

实际上,如果您使用的是Maven,并且您的pom.xml项目属性configuration正确

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

您可以将Maven参数重新导入到intellij-idea项目中 – 右键单击​​项目根项目,然后在底部的Maven -> Reimport

图为Maven是项目右键菜单中最后一项的第二项

文件>设置>构build,执行,部署> Java编译器

将目标字节码版本更改为您正在使用的模块的1.8版本。

如果你正在使用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> 

也许你的仓库configuration有属性包括编译器版本。 检查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> 

如果你正在使用Gradle,不要忘记确保以下设置为1.8而不是1.5(例如,在Intelij中有一些奇怪的原因,默认为1.5),所以不pipe你在项目级别做什么来设置编译器兼容性级别,这个设置会导致它继续给你带来Java8的function,它不会识别的麻烦:

 version '1.0-SNAPSHOT' apply plugin: 'groovy' apply plugin: 'java' sourceCompatibility = 1.8