IDEA中maven项目的language level 修改后自动重置问题
问题:
我的JDK使用的是1.8,但是在IDEA中编写1.8特性的代码时却会爆红,而且编译也通不过,确定不是代码的问题后。转而发现了Language Level这个东西,IDEA中默认Language Level 5(即对应JDK1.5),打开Module Settings将Language level修改为8(即对应JDK1.8),但是重新刷新maven依赖时,又会变成Language Level 5。
language level 简介:
language level 这个功能应该算是 IntelliJ IDEA 特有的,说一下我的理解, Java JDK 在每个新版本都会有其新特性,新版本一般也会向下兼容旧版本的特性,IntelliJ IDEA 是对这些 JDK 的新特性是这样介绍的:
JDK 6 的新特性:@Override in interfaces
JDK 7 的新特性:Diamonds,ARM,multi-catch etc.
JDK 8 的新特性:Lambdas,type annotation etc.
JDK 9 的新特性:Jigsaw project etc.
- 1
- 2
- 3
- 4
使用 JDK 1.8 的时候,我们只能向下兼容 JDK 1.8 及其以下的特性,所以只能选择 1.8 及其以下的 language level。当我们项目使用的是 JDK 1.8,但是代码却没有使用 JDK 1.8 的新特性,最多使用了 JDK 1.7 的特性的时候我们可以选择 7 - Diamonds,ARM,multi-catch etc.。但是如果一个项目代码使用的 JDK 1.8 新特性:lambda 语法,但是 JDK 选择的却是 JDK1.7,即使 language level 选择了 8 - Lambdas,type annotation etc.,也是一样会编译报错。
总结 :language level限定项目编译检查时最低要求的 JDK 特性。
解决方法:
通过指定maven项目的Language Level值,来防止每次自动重置Language Level。在maven项目的pom.xml 中添加如下内容即可:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
你的点赞与评论是我最大的创作动力!
文章来源: blog.csdn.net,作者:橙子园,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/Chenftli/article/details/108622644
- 点赞
- 收藏
- 关注作者
评论(0)