Intellij – 无法使用较新的Java 8类 – 错误:“使用APIlogging为@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
。
文件>设置>构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