最近打开了一个好久以前的EE项目,运行的时候报错html
Information:java: Errors occurred while compiling module 'xxx'java
Information:javac 1.8.0_201 was used to compile java sourceside
Information:Module "xxx" was fully rebuilt due to project configuration/dependencies changesui
Information:2020/2/13 18:32 - Build completed with 1 error and 0 warnings in 3 s 688 msspa
大概意思就是说.net
解决方法以下code
以后查了下project language level是干啥的orm
https://www.cnblogs.com/signheart/p/4d2058ae687f9a29680c070de85f7fbe.htmlhtm
其余 IDE 没有看到相似 language level
的设置,因此这个功能应该算是 IntelliJ IDEA 特有的,但是 IntelliJ IDEA 官网也没有专门介绍 language level
的地方,也许 IntelliJ IDEA 认为这个知识点属于 JDK 范畴因此没加以介绍吧。因此这里主要我对此的一些理解。咱们应该知道 Java JDK 在每一个新版本都会有其新特性,而新版本通常也会向下兼容旧版本的特性,IntelliJ IDEA 是对这些 JDK 的新特性是这样介绍的:blog
etc. == et cetera == and so on == 等等
SDK default
为 7 - Diamonds,ARM,multi-catch etc.
SDK default
为 8 - Lambdas,type annotation etc.
当咱们使用 JDK 8 的时候,咱们只能向下兼容 JDK 8 及其如下的特性,因此只能选择 8 及其如下的 language level
。因此当咱们项目使用的是 JDK 8,可是代码却没有使用 JDK 8 的新特性,最多使用了 JDK 7 的特性的时候咱们能够选择 7 - Diamonds,ARM,multi-catch etc.
。
对此咱们总结 language level
:限定项目编译检查时最低要求的 JDK 特性。
如今假设咱们有一个项目代码使用的 JDK 8 新特性:lambda
语法,可是 JDK 选择的倒是 JDK 7,即便 language level
选择了 8 - Lambdas,type annotation etc.
,也是没有多大意义的,同样会编译报错。
对于大型项目,各个 Module 用到的 SDK
和 language level
颇有多是各不同的,IntelliJ IDEA 对此也进行了支持。
Project SDK