IDEA報錯信息 Error:java:無效的源發行版:12 解決方法

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

1. ctrl+alt+shift+s 打開project structure

2.修改project language level 等級爲8

便可解決

 

 

 

以後查了下project language level是幹啥的orm

https://www.cnblogs.com/signheart/p/4d2058ae687f9a29680c070de85f7fbe.htmlhtm

language level 介紹

其餘 IDE 沒有看到相似 language level 的設置,因此這個功能應該算是 IntelliJ IDEA 特有的,但是 IntelliJ IDEA 官網也沒有專門介紹 language level 的地方,也許 IntelliJ IDEA 認爲這個知識點屬於 JDK 範疇因此沒加以介紹吧。因此這裏主要我對此的一些理解。咱們應該知道 Java JDK 在每一個新版本都會有其新特性,而新版本通常也會向下兼容舊版本的特性,IntelliJ IDEA 是對這些 JDK 的新特性是這樣介紹的:blog

  • JDK 6 的新特性:@Override in interfaces
  • JDK 7 的新特性:Diamonds,ARM,multi-catch etc.
  • JDK 8 的新特性:Lambdas,type annotation etc.
  • JDK 9 的新特性:Jigsaw project etc.
  • etc. == et cetera == and so on == 等等

  • 如上第一張圖標註 1,使用的是 JDK 7,顯示的 SDK default 爲 7 - Diamonds,ARM,multi-catch etc.
  • 如上第二張圖標註 1,使用的是 JDK 8,顯示的 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

對於大型項目,各個 Module 用到的 SDK 和 language level 頗有多是各不同的,IntelliJ IDEA 對此也進行了支持。

  • 如上圖標註 1 所示,能夠針對 Module 選擇其餘 SDK,默認選擇的是 Project SDK

相關文章
相關標籤/搜索