[Java SE]javac編譯時編碼錯誤


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語法版本

X 參考文獻


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM