最近打開了一個好久以前的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