1 問題復現
Information:java: javacTask: 源發行版 8 需要目標發行版 1.8
Information:java: Errors occurred while compiling module 'SSMDemo'
Information:javac 1.8.0_261 was used to compile java sources
Information:2020/10/12 0:32 - Build completed with 1 error and 0 warnings in 1 s 309 ms
Error:java: Compilation failed: internal java compiler error



2 原因分析
step1 查看文件編碼
LambdaTest.java : UTF-8
方法1: windows中查看文件編碼:(選中目標文件)>(鼠標右鍵,記事本打開)>另存為>編碼(查看當前的編碼字符集)

方法2: IDEA>打開目標文件>(界面右下角)

step2 查看 javac 的命令說明(幫助文檔)
javac -help

由此,結合錯誤信息,可猜測:
Q:為什么在CMD命令行下編譯和在IDEA中編譯均報此異常?
A:javac此時編譯時,使用的 系統默認的GBK進行【解碼】和編譯,而java文件使用UTF-8進行【編碼】,從而導致的錯誤。

step3 驗證: 為javac編譯器【指定字符集】進行【解碼】和編譯
javac -encoding utf-8 LambdaTest.java
結果: 無任何報錯信息,編譯成功!

step4 解決異常:Compilation failed: internal java compiler error
經測試:
1.IDEA中的異常與其編譯器編譯時的字符集無關。
2.與java文件(使用了JDK1.8的新特性————Lambda語法),而IDEA中設置JDK(JDK1.8)的實際JDK語法版本為1.7的語法。1.7的語法,自然不支持1.8的語法了。
(即 1.8向下兼容以前版本的語法)
針對異常Compilation failed: internal java compiler error
解決方案:Setting->Compiler->Java Compiler>設置相應Module的【target byte code version】的版本

[補充] 設置當前項目的JDK語法版本
